在Teradata中修改表格

时间:2012-08-09 12:04:23

标签: teradata

您好Teradata同事!

我必须在制作中做一些修改: 1)修改现有的柱子 2)添加一些新的柱子 3)删除并重新创建主索引

任何人都可以帮助我1)案例 - 通过添加压缩部分来修改列段:

段CHAR(10)字符集LATIN NOT CASESPECIFIC COMPRESS('AM','CAM','KAM','KO','PSHC','RES','SBS')

如何添加此列: pot_klasse CHAR(1)CHARACTER SET LATIN NOT CASESPROPIC COMPRESS('B','U')

如何制作新索引? (我必须先丢弃它然后重新制作吗?)

1 个答案:

答案 0 :(得分:3)

注意:所有这些信息均可在Teradata手册中找到,可从 here 下载。从那里,您可以在屏幕的右上角选择您感兴趣的版本。

将值列表压缩添加到现有列

根据您可以容忍表被独占锁定的表大小和持续时间,您可以使用ALTER TABLE添加值列表压缩。如果压缩值列表的表头中有足够的存在位,则操作可以相当快,否则会相当密集:

ALTER TABLE MyDB.MyTable ADD SEGMENT CHAR(10) 
      COMPRESS ('AM', 'CAM', 'KAM', 'KO', 'PSHC', 'RES', 'SBS');

否则,您可以创建一个新表,并在其上定义值列表压缩,将统计信息从原始生产表复制到新表,将数据插入新表,然后重命名表以引入新表作为生产表。

将列添加到现有表

如果表头中存在未使用的存在位,则使用ALTER TABLE添加此列可能是一个相当快速的操作。如果没有足够的存在位来捕获压缩值列表ALTER TABLE将不是推荐的方法:

ALTER TABLE MyDB.MyTable ADD pot_klasse CHAR(1) 
      CHARACTER SET LATIN NOT CASESPECIFIC COMPRESS ('B','U');

更改主要索引

这取决于。

在某些情况下,您可以修改表格的PI,而无需使用ALTER TABLE创建新表格。 (例如,对于唯一的非唯一)但是,您经常会发现自己必须创建一个新表并将原始表中的数据插入到新表中。 (例如,添加列,更改主索引中列的数据类型等)