尝试加载简单的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;
文件中没有其他列。
答案 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;
答案 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)
对我来说,结果是我在集群内错误的数据库上执行了脚本。