移动列从来就在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