【发布时间】:2015-07-01 11:09:08
【问题描述】:
有没有办法更改 Amazon Redshift(或 Postgres,因为它基于它)中的列顺序?或者也许在特定位置添加一列?
在mysql中你可以这样做:
ALTER TABLE MY_TABLE
ADD COLUMN {NEW_COL} AFTER {EXISTING_COL}
但这在 Redshift 中不起作用。有什么想法吗?
【问题讨论】:
-
纯粹主义者会争辩说您永远不需要这样做,因为列应该按名称而不是顺序来引用,但实际上 SQL 确实将列视为有序,因此它排序of 想要选择那个顺序是有道理的。 The ALTER TABLE docs 没有提及任何方法,但这并不能证明没有某种解决方法,尤其是在 Redshift 中,它使用“面向列”的存储模型。
-
使用 COPY 命令导入数据时,需要表中的列顺序与 CSV 文件的列顺序匹配。
-
可能更好的链接是the Redshift docs,因为它在一段时间前与 Postgres 不同。但是,现在你提到 COPY,我想我们这里可能有一个 X/Y Problem...
-
请问 - 为什么需要更改列的顺序?我看它的方式,红移列顺序应该无关紧要。
-
因为马丁说的。当您复制以从 s3 上传表格时,例如您需要 csv/parquet 的列与 redshift 表的顺序相同,否则它将不起作用
标签: amazon-redshift