我正在尝试使用COPY
命令对包含guillemet(»
)的某些数据运行CSV导入。 Redshift抱怨我已定义的varchar
列的列值太长。 Redshift GUI中“载荷”选项卡中的错误将此字符显示为两个点:..
- 如果它被视为一个,它将适合varchar
列。目前尚不清楚是否存在某种转换错误或是否存在显示问题。
当试图做普通INSERT
时,我也遇到了奇怪的行为:
dev=# create table test (name varchar(3));
CREATE TABLE
dev=# insert into test values ('bla');
INSERT 0 1
3个字符被视为4?
dev=# insert into test values ('bl»');
ERROR: value too long for type character varying(3)
dev=# insert into test values ('b»');
INSERT 0 1
为什么char_length
会返回2?
dev=# select char_length(name), name from test;
char_length | name
-------------+------
2 | b»
我检查了客户端编码和数据库编码,这些编码似乎都是UTF8 / UNICODE。
答案 0 :(得分:0)
您需要增加varchar字段的长度。多字节字符在varchar字段的定义中使用多个字符和长度是基于字节的。因此,您的特殊字符可能需要超过一个字节。如果仍然无效,请参阅下面的Redshift文档页面,
http://docs.aws.amazon.com/redshift/latest/dg/multi-byte-character-load-errors.html