如何在Teradata数据库中查找具有指定列名的所有表?

5
我有2-3个不同的列名,想要在整个数据库中查找并列出拥有这些列的所有表格。是否有简单的查询语句?
我看过MySQL的解决方案,但它在这里行不通,因为据我所知TD没有模式,而是我找到了这个
然后尝试了这段代码:
SELECT TableName
FROM DBC.COLUMNS
WHERE DatabaseName = 'DB_NAME' and
ColumnName in ('col1', 'col2')

但是肯定需要使用子查询来获取TableName,因为DBC.COLUMNS没有该字段。还有其他想法吗?

1
DBC.Columns 似乎是您正在寻找的内容:http://www.info.teradata.com/HTMLPubs/DB_TTU_14_00/index.html#page/Database_Management/B035_1092_111A/Views_Reference.015.134.html#ww25068441 - user330315
2个回答

9
你正在寻找这个内容:
SELECT tablename
FROM dbc.columnsV
WHERE ColumnName in ('col1', 'col2')

我更新了我的问题,我的主管说必须使用子查询。 - Rocketq
2
@Rocketq……当然tablename在表中。被告知使用子查询是适得其反的。 - Gordon Linoff
没错,它在表中,我已经检查了 show select* from DBC.Columns - Rocketq
1
请将视图更改为 dbc.ColumnsV,dbc.Columns 是一个旧的遗留版本,在 TD12 以后已被弃用。从 TD14.10 开始,如果使用超过30个字符的对象名称,则可能返回错误结果... - dnoeth

4

这个查询在我的情况下有效:

SELECT  DatabaseName,
        TableName,
        CreateTimeStamp,
        LastAlterTimeStamp
FROM    DBC.TablesV
WHERE   TableKind = 'T'
and     DatabaseName = 'YOUR_SCHEMA'
ORDER BY    TableName;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接