Redshift错误1202“使用COPY命令找到”额外列“

时间:2016-03-14 21:35:08

标签: csv amazon-web-services amazon-s3 amazon-redshift

尝试加载简单的CSV时,我在Redshift中收到1202 Extra column(s) found错误。我已经确保文件中没有其他列或任何未转义的字符会导致COPY命令因此错误而失败。

这是创建的目标表:

create table test_table(
  name varchar(500),
  email varchar(500),
  developer_id integer,
  developer_name varchar(500),
  country varchar(20),
  devdatabase varchar(50));

我使用的是简单的CSV,没有标题,只有3行数据:

john smith,john@gmail.com,123,johndev,US,comet
jane smith,jane@gmail.com,124,janedev,GB,titan
jack smith,jack@gmail.com,125,jackdev,US,comet

不幸的是,我的COPY命令失败了err_1202 "Extra column(s) found"

COPY test_table 
FROM 's3://mybucket/test/test_contacts.csv'    
WITH credentials AS 'aws_access_key_id=<awskey>;aws_secret_access_key=<mykey>'
CSV;

文件中没有其他列。

3 个答案:

答案 0 :(得分:2)

尝试一下:

COPY test_table 
FROM 's3://mybucket/test/test_contacts.csv'    
WITH credentials AS 'aws_access_key_id=<awskey>;aws_secret_access_key=<mykey>'
delimiter ',' 
ignoreheader as 1 
emptyasnull
blanksasnull
removequotes
escape;

来源:https://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#r_COPY_command_examples-copy-data-with-the-escape-option

答案 1 :(得分:0)

确保在copy语句(和源文件)中指定了正确的定界符。我遇到了同样的问题。经过几次使用不同分隔符的尝试(将表卸载到s3文件,然后从s3文件复制到另一个表中),我能够使用delimiter '\t'解决了这个问题。这是我的完整示例:

copy <TABLE-NAME>
from 's3://<FILES/LOCATION>'
access_key_id '<INSERT>'
secret_access_key '<INSERT>'
delimiter '\t'
ignoreheader 1
maxerror 10;

答案 2 :(得分:-1)

对我来说,结果是我在集群内错误的数据库上执行了脚本。