Redshift中的COPY CSV命令是否按标题中定义的顺序加载?

时间:2018-09-03 11:21:41

标签: csv amazon-s3 amazon-redshift

我有一些代码将CSV文件从S3中提取到Redshift表中。我遇到问题,如果CSV以特定的列顺序存储,则复制命令与CSV标头中的列顺序不匹配。

因此,如果我有一个id|age|name列的CSV和一个id|name|age列的Redshift表,它将尝试按CSV标头顺序提取数据。因此,在这种情况下,它将尝试将名称CSV列拖入Redshift的age列,这会导致类型错误。

我的查询是:

copy schema.#tmp from <s3file> 
iam_role <iamrole> 
acceptinvchars 
truncatecolumns
IGNOREBLANKLINES
ignoreheader 1
                  COMPUPDATE OFF
                  STATUPDATE OFF
                  delimiter ','
                  timeformat 'auto'
                  dateformat 'auto';

我是否需要在复制命令中定义列顺序以使两者相符?

1 个答案:

答案 0 :(得分:4)

COPY忽略文件中的列名;列从左到右匹配。

但是您可以在COPY语句中指定列列表。用它来告诉PostgreSQL文件中列的顺序。