Csv 红移错误1202“;找到了额外的列“;使用COPY命令

Csv 红移错误1202“;找到了额外的列“;使用COPY命令,csv,amazon-web-services,amazon-s3,amazon-redshift,Csv,Amazon Web Services,Amazon S3,Amazon Redshift,在尝试加载简单CSV时,我在红移中发现了1202个额外列。我已确保文件中没有其他列或任何未转义字符会导致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时,我在红移中发现了1202个额外列。我已确保文件中没有其他列或任何未转义字符会导致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
不幸的是,我的复制命令失败,错误为“找到额外列”

复制测试表
来自“s3://mybucket/test/test_contacts.csv”
凭证为“aws\u访问\u密钥\u id=”;aws\u机密\u访问\u密钥=
CSV;

文件中没有其他列。

在加载数据时,我也面临同样的问题。我使用以下代码进行了纠正:

copy yourtablename
from 'your S3 Locations'
credentials 'your AWS credentials' 
delimiter ',' IGNOREHEADER 1 
removequotes
emptyasnull
blanksasnull
maxerror 5;
试试这个:

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;
复制测试表
来自“s3://mybucket/test/test_contacts.csv”

凭据为“aws\u access\u key\u id=

时,请确保在copy语句(以及源文件)中指定了正确的分隔符。我遇到了同样的问题。尝试使用不同的分隔符(将表卸载到s3文件中,然后从s3文件复制到另一个表中)几次之后,我能够通过使用
分隔符“\t”
解决这个问题。以下是我的例子:

copy <TABLE-NAME>
from 's3://<FILES/LOCATION>'
access_key_id '<INSERT>'
secret_access_key '<INSERT>'
delimiter '\t'
ignoreheader 1
maxerror 10;
复制
从's3://'
访问密钥id“”
机密\u访问\u密钥“”
分隔符'\t'
信号头1
最大误差10;

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

我按照您的步骤成功地将数据导入到红移表中。我已经清理了您的问题(删除了架构名称、关闭了凭据引用、提到了bucket名称),所以您可能希望确认它仍然符合您的情况。我将数据保存为S3存储桶中的文本文件(未压缩)。有时名称包含逗号(,),您可能需要查看数据并引用它们您是否检查了stl_错误表,或者是否正在查看来自SQL客户端的错误消息?选择err_reason、raw_line、err_code、query、session、tbl FROM stl_load_errors WHERE filename像's3://mybucket/test/test_contacts%'按query DESC排序,starttime DESC将您的分隔符更改为~如果不正确,请尝试在导入到您的环境时检查表架构是否正确。不要直接关联问题中的问题
copy <TABLE-NAME>
from 's3://<FILES/LOCATION>'
access_key_id '<INSERT>'
secret_access_key '<INSERT>'
delimiter '\t'
ignoreheader 1
maxerror 10;