字符长度超过DDL长度

时间:2018-06-29 11:55:57

标签: amazon-web-services char amazon-redshift

我正在尝试从S3存储桶中将数据复制到redshift中,但是我收到了1204错误代码“字符长度超出DDL长度”。

copy table_name from '[data source]'
access_key_id '[access key]'
secret_access_key '[secret access key]'
region 'us-east-1'
null as 'NA'
delimiter ','
removequotes;

该错误发生在第一行,它尝试将状态缩写“ GA”放入由数据类型char(2)定义的data_state列中。查询stl_load_errors表时,得到以下结果:

line_number  colname      col_length  type   raw_field_value  err_code  err_reason
1            data_state   2           char   GA               1204      Char length exceeds DDL length                                                                                                  

据我所知,长度不应超过两个字符,并且应将其设置为char(2)。有人知道是什么原因造成的吗?

3 个答案:

答案 0 :(得分:0)

通过将数据类型改为char(3)使它起作用,但是仍然不确定为什么char(2)无法起作用

答案 1 :(得分:0)

我的状态列也是如此。 Redshift默认将char设置为char(1)-所以我必须指定char(2)-您确定它没有默认设置为char(1)因为我的是

答案 2 :(得分:0)

使用十六进制编辑器打开文件,或使用在线here,然后在GA列中查看data_state值。

如果它前面有三个点:

...GA

然后文件(或原始创建文件)为UTF-8-BOM,而不仅仅是UTF-8

您可以使用Notepad++之类的文件打开文件,然后转到顶部栏中的Encoding,然后选择Convert to UTF-8