在Teradata中修改表
嗨,Teradata的同事们 我必须在生产中进行一些修改: 1) 修改现有合谋 2) 添加一些新的collumns 3) 删除并重新创建主索引 有人能在1)情况下帮我吗-添加压缩部分修改柱段: 段字符(10)字符集拉丁非大小写压缩('AM','CAM','KAM','KO','PSHC','RES','SBS')) 如何添加此列: pot_klasse CHAR(1)字符集拉丁非大小写压缩('B','U')) 如何制作新的索引?(我必须先放下它,然后再做一个新的吗?注意:所有这些信息都可以在Teradata手册中找到,可从下载。从那里,您可以在屏幕右上角选择感兴趣的版本 向现有列添加值列表压缩 根据您可以容忍表被独占锁定的表大小和持续时间,您可以使用在Teradata中修改表,teradata,Teradata,嗨,Teradata的同事们 我必须在生产中进行一些修改: 1) 修改现有合谋 2) 添加一些新的collumns 3) 删除并重新创建主索引 有人能在1)情况下帮我吗-添加压缩部分修改柱段: 段字符(10)字符集拉丁非大小写压缩('AM','CAM','KAM','KO','PSHC','RES','SBS')) 如何添加此列: pot_klasse CHAR(1)字符集拉丁非大小写压缩('B','U')) 如何制作新的索引?(我必须先放下它,然后再做一个新的吗?注意:所有这些信息都可以在Te
ALTER table
添加值列表压缩。如果表头中有足够的存在位用于压缩值列表,则操作可以相当快,否则将相当密集:
ALTER TABLE MyDB.MyTable ADD SEGMENT CHAR(10)
COMPRESS ('AM', 'CAM', 'KAM', 'KO', 'PSHC', 'RES', 'SBS');
否则,您可以创建一个定义了值列表压缩的新表,将统计信息从原始生产表复制到新表,将数据插入新表,然后重命名这些表以将新表作为生产表引入
将列添加到现有表中
如果表头中有未使用的存在位,那么使用ALTERTABLE添加此列可以是一个相当快速的操作。如果没有足够的存在位用于捕获压缩值列表ALTER TABLE
将不是推荐的方法:
ALTER TABLE MyDB.MyTable ADD pot_klasse CHAR(1)
CHARACTER SET LATIN NOT CASESPECIFIC COMPRESS ('B','U');
更改主要索引
视情况而定
在某些情况下,您可以修改表的PI,而无需使用
altertable
创建新表。(例如,非唯一到唯一)但是,您经常会发现自己必须创建一个新表,并将数据从原始表插入到新表中。(例如,添加列、更改主索引中列的数据类型等)Thx Rob!这就是我要找的。Rob,你能帮我解决这个问题吗(我没有在文档中找到它,这真的有点让人不知所措):我的表有这个列-禁止十进制(9,0),现在我想把它改为-禁止十进制(15,0)压缩0。-我怎么做?什么是压缩约束0。还是别的什么意思?谢谢,D。我希望这是可能的,我不必创建一个新表,然后从旧表复制数据。该表非常大-当我从该表中计算(*)时,我得到以下错误:2616数字溢出发生在计算过程中。我看到您关于CONUT(*)的问题在单独的SO线程中得到解决。