2012-08-09 52 views
1

嗨Teradata同事!Teradata中的修改表

我必須做在生產一些修改: 1)修改現有collumns 2)添加了一些新的collumns 3)刪除並重新創建主索引

誰能幫我在1)的情況下 - 修改('AM','CAM','KAM','KO','PSHC','RES','SBS')的段列表中添加壓縮部分的列段:

段CHAR(10)CHARACTER SET LATIN NOT CASESPOLIC COMPRESS ')

如何添加此列: pot_klasse CHAR (1)字符集拉丁不是特例壓縮('B','U')

如何創建新的索引? (我必須先刪除它,然後作出一個新的?)

回答

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創建新表格。 (例如,唯一唯一)然而,通常你會發現自己不得不創建一個新表並將原始表中的數據插入到新表中。 (例如添加列,改變主索引中列的數據類型等)

+0

Thx Rob!這是我正在尋找的。 – Dantes 2012-08-09 14:21:55

+0

不客氣。 – 2012-08-09 16:58:08

+0

羅布,可以請你幫我有關這件事(我didn't發現它的文檔,這是實話有點麻煩的): 我的表有此列-ban DECIMAL(9,0) - ,現在我想將其更改爲 - BAN DECIMAL(15,0)COMPRESS 0.-我該怎麼做? COMPRESS約束0還是任何其他含義呢?謝謝,D. – Dantes 2012-08-10 08:18:29