1

嗨 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 CASESPECIFIC COMPRESS ('B','U')

如何制作新的索引?(我必须先放下它,然后再做一个新的吗?)

4

1 回答 1

3

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

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

根据您可以容忍表被排他锁定的表大小和持续时间,您可以使用添加值列表压缩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. (例如,非唯一到唯一) 但是,您通常会发现自己必须创建一个新表并将原始表中的数据插入到新表中。(例如添加一列,更改主索引中列的数据类型等)

于 2012-08-09T13:58:01.603 回答