首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找Teradata中所有未压缩的表

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

Stack Overflow用户
提问于 2016-10-18 07:50:00
回答 3查看 1.9K关注 0票数 1

有没有一种方法可以在teradata中找到所有未压缩的表?

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

代码语言:javascript
运行
复制
SHOW TABLE <TABLE_NAME>

并检查列是否有COMPRESS关键字。如果我有1000张桌子的话,这会变得非常乏味。

是否有列或表可以查询这样的表,就像我可以检查宏-

代码语言:javascript
运行
复制
SELECT * FROM dbc.tables WHERE tablekind='M' AND databasename='database'

任何帮助都是非常感谢的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-18 08:05:36

您可以找到所有压缩列:

代码语言:javascript
运行
复制
select * from dbc.ColumnsV 
where CompressValueList is not null

若要获取表而不进行任何压缩:

代码语言:javascript
运行
复制
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
 )
票数 3
EN

Stack Overflow用户

发布于 2016-10-18 08:03:53

正如您所提到的,压缩更多地是“列的事情”而不是“表的事情”,所以最好在列元数据中签入:

这是一个可能的查询(有待改进):

代码语言:javascript
运行
复制
  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
票数 0
EN

Stack Overflow用户

发布于 2016-10-18 08:06:23

为此,可以使用dbc表列。可压缩= 'C‘会给出这些值。

代码语言:javascript
运行
复制
select databasename,tablename,columnname,compressible
from dbc.columns
where compressible in ('A','C')

顺便提一下,在y中,我们询问为什么要选择tablekind='M',它不会返回表的详细信息,而是返回宏的详细信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40102514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档