有没有一种方法可以在teradata中找到所有未压缩的表?
到目前为止,我是通过使用
SHOW TABLE <TABLE_NAME>
并检查列是否有COMPRESS
关键字。如果我有1000张桌子的话,这会变得非常乏味。
是否有列或表可以查询这样的表,就像我可以检查宏-
SELECT * FROM dbc.tables WHERE tablekind='M' AND databasename='database'
任何帮助都是非常感谢的。
发布于 2016-10-18 08:05:36
您可以找到所有压缩列:
select * from dbc.ColumnsV
where CompressValueList is not null
若要获取表而不进行任何压缩:
SELECT * FROM dbc.TablesV
WHERE TableKind IN ('T', 'O') -- both PI and NoPI tables
AND (DatabaseName, TableName) NOT IN
(
SELECT DatabaseName, TableName
FROM dbc.columnsv
WHERE CompressValueList IS NOT NULL
)
发布于 2016-10-18 08:03:53
正如您所提到的,压缩更多地是“列的事情”而不是“表的事情”,所以最好在列元数据中签入:
这是一个可能的查询(有待改进):
select t.tablename, sum(case when compressvaluelist is null then 0 else 1 end) compressed_cols, count(*) cols
from dbc.ColumnsV c join dbc.TablesV t on (c.tablename=t.tablename and c.databasename=t.databasename)
where t.databasename='<databasename>'
and t.tablekind in ('T','O')
group by 1
having compressed_cols=0
发布于 2016-10-18 08:06:23
为此,可以使用dbc表列。可压缩= 'C‘会给出这些值。
select databasename,tablename,columnname,compressible
from dbc.columns
where compressible in ('A','C')
顺便提一下,在y中,我们询问为什么要选择tablekind='M',它不会返回表的详细信息,而是返回宏的详细信息。
https://stackoverflow.com/questions/40102514
复制相似问题