移動列從來就在Teradata數據創建了一個新列,然後我已經從另一個科拉姆數據到這個新colmn。之後,我刪除了舊列。 現在我想要做的是將新列移動到舊列的表中相同的位置。 我想問你 - 是否可能?在Teradata的
回答
除非業務需要強制執行表定義的列的順序位置(例如時間戳在表定義中的最後一列),它其實並不重要。如果您有一個使用適當的ROW ACCESS鎖定將列視圖列(1:1)映射到視圖列的V1層,則視圖定義可以始終向最終用戶和BI應用程序公開列的首選序號位置。
如果必須重新排列您的列執行以下操作:
- 提交
CREATE TABLE MyDB.MyTable_
用你喜歡的順序位置,列缺省值,任何值列表壓縮。 COLLECT STATISTICS ON MyDB.MyTable_ FROM MyDB.MyTable; -- Migrate collected statistics
INSERT INTO MyDB.MyTable_ SELECT /* Columns */ FROM MyDB.MyTable;
RENAME MyDB.MyTable AS MyDB.MyTable1; RENAME TABLE MyDB.MyTable_ AS MyDB.MyTable;
- 後確認一切正常,
DROP TABLE MyDB.MyTable1;
你也可以執行以下操作來代替步驟1和3:
CREATE TABLE MyDB.MyTable_
(/* Column Definitions in new Order */) AS
(SELECT /* New Column Ordering */
FROM MyDB.MyTable)
WITH DATA AND STATISTICS
{UNIQUE} PRIMARY INDEX (/* Primary Index Columns */);
統計可能會或可能不會過來使用此填充做法。在創建新表之後,您需要驗證這一點。
因爲這是關係到your previous question,我會盡量在同樣的情況下回答。
不,你不能在事後更改列的順序。當您將一個新列「添加」到現有表格時,它將在表格描述的末尾定義。如果您確實需要列在物理表中以特定順序顯示,則必須完全重新創建表。
但是,您可以創建一個顯示在任何你想要的順序行的視圖。實際上,如果您打算將此表用於某種應用程序,則無論如何您都應該創建一個VIEW(這樣您可以建立正確的訪問鎖定)。例如,假設你有一個名爲MYTABLE有三列爲col_a,COL_B和COL_C表,並且要以相反的順序它們「顯示」:
replace view MYDB.MYTABLE_V as
locking MYDB.MYTABLE for access
select COL_C, COL_B, COL_A
from MYDB.MYTABLE
使用「替換視圖」如果它不將創建視圖已經存在,或者如果它存在,則將其替換當然,這意味着如果您改變表格,則必須重新創建視圖。爲了安全起見,我在表創建程序的註釋塊中保留了視圖定義。
鮑勃,謝謝你的回答!這幫助我清楚瞭解Teradata的一些疑問。 – Dantes 2012-08-14 07:11:12
- 1. 在Teradata的
- 2. 在Teradata的
- 3. 在MySQL的Teradata
- 4. FETCH_STATUS在Teradata的
- 5. 如何在Teradata的
- 6. 更新在Teradata的
- 7. 空間在Teradata的
- 8. 如何在Teradata的
- 9. 差異在TERADATA
- 10. 的Teradata的Python:teradata.api.InterfaceError
- 11. CSUL()在teradata中的輸出
- 12. 零填充在Teradata的SQL
- 13. 列於排在Teradata的
- 14. 」)。「期待之一,在Teradata的
- 15. Teradata的:可變
- 16. Null值 - Teradata的
- 17. SQL查詢的Teradata
- 18. Teradata的選擇月
- 19. Teradata的Z^<X
- 20. PPI中的NUPI(Teradata)
- 21. 標識列的Teradata
- 22. 鑄件的Teradata/SQL
- 23. teradata中的QUALIFY ROW_NUMBER
- 24. Teradata中的索引
- 25. SUBSTR之間的Teradata
- 26. CASE語句:Teradata的
- 27. 在Teradata中使用查找列表(使用Teradata SQL Assistant)
- 28. 在Teradata中創建密鑰
- 29. Teradata Multiload腳本卡在LOGON
- 30. 在Teradata中調用UDF
鮑勃,你的回答總是多於幫助。謝謝! – Dantes 2012-08-14 07:10:38