【问题标题】:How to list columns using COPY command with Redshift?如何使用带有 Redshift 的 COPY 命令列出列?
【发布时间】:2021-03-20 13:24:49
【问题描述】:

我正在尝试使用COPY 命令加载一个表,并根据红移文档https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-column-mapping.html#copy-column-mapping-jsonpaths 指定列列表

s3://mybucket/data/listing/data.csv 的文件内容是文件头后跟文件内容。文件内容如下:

c1, c2, c3, c4. c5, c6, c7
1,2,3,4,5,6,7
11,11,11,11,11,11,11
21,21,21,21,21,21,21
31,31,31,31,31,31,31
.........................
.........................
.........................    

我正在使用以下命令加载listing 表,该表只有三列 c1、c2、c3。

copy listing(c1, c2, c3)
from 's3://mybucket/data/listing/data.csv' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
CSV

但是,Redshift 不允许复制并失败并出现以下错误:

1202    Extra column(s) found

为什么会这样?我正在指定具有相同名称的选定列。 我在这里缺少什么?

【问题讨论】:

    标签: database amazon-web-services amazon-redshift create-table


    【解决方案1】:

    您目前不能以这种方式限制COPY 语句中的列。您可以将所有列加载到临时表,然后 INSERT 将它们加载到目标表中,或者您可以将要加载的文件定义为外部表,然后使用 SELECTINSERT 直接加载到目标表中外部表。

    https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE.html

    【讨论】:

      猜你喜欢
      • 2016-06-15
      • 1970-01-01
      • 2016-06-30
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多