在 Teradata 中查找所有未压缩的表

Find all uncompressed tables in Teradata

有没有办法在 teradata 中找到所有未压缩的 table?

到目前为止,我是通过使用

手动完成的
SHOW TABLE <TABLE_NAME>

并检查列是否有 COMPRESS 关键字。如果我有 100 个 tables.

,这会变得很乏味

是否有一个列或 table 我可以在其中查询此类 table 之类的东西,比如我可以检查宏 -

SELECT * FROM dbc.tables WHERE tablekind='M' AND databasename='database'

感谢任何帮助。

如您所述,压缩更像是 "column thing" 而不是 "table thing",因此您最好检查列元数据:

可能的查询(有待改进):

  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

您可以找到所有压缩列:

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
 )

您可以为此使用 dbc table 列。 Compressible = 'C' 将为您提供这些值。

select databasename,tablename,columnname,compressible
from dbc.columns
where compressible in ('A','C')

顺便说一句,在我们的查询中,您为什么选择 tablekind='M',它不会 return table 的详细信息,但会 return宏的细节。