字符长度超过 DDL 长度
Posted
技术标签:
【中文标题】字符长度超过 DDL 长度【英文标题】:Char length exceeds DDL length 【发布时间】:2018-06-29 11:55:57 【问题描述】:我正在尝试将数据从 S3 存储桶复制到 redshift,但是我收到 1204 错误代码“”。
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)。有谁知道是什么原因造成的?
【问题讨论】:
【参考方案1】:通过将数据类型更改为 char(3) 来让它工作,但仍然不确定为什么 char(2) 不能工作
【讨论】:
查看您的任何记录中是否有space
或\t
等数据
@RedBoy 我检查了但在我的数据集中没有找到类似的东西【参考方案2】:
我的也是这样做的,也用于状态列。 Redshift 默认 char 为 char(1) - 所以我必须指定 char(2) - 你确定它没有默认为 char(1),因为我这样做了
【讨论】:
你的答案好像在中途被截断了?【参考方案3】:使用十六进制编辑器打开文件,或使用在线编辑器here,然后查看data_state
列中的GA
值。
如果它前面有三个点,像这样:
...GA
那么文件(或最初创建时)是UTF-8-BOM
而不仅仅是UTF-8
。
您可以以Notepad++ 之类的方式打开文件,然后转到顶部栏中的Encoding
,然后选择Convert to UTF-8
。
【讨论】:
以上是关于字符长度超过 DDL 长度的主要内容,如果未能解决你的问题,请参考以下文章
字符串长度超过 Glue 中的 DDL 长度(python,pyspark)
BCryptPasswordEncoder 密码长度是不是限制超过 72 个字符?