Redshift如何治疗罪恶感?

时间:2016-05-31 23:17:35

标签: amazon-redshift

我正在尝试使用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。

1 个答案:

答案 0 :(得分:0)

您需要增加varchar字段的长度。多字节字符在varchar字段的定义中使用多个字符和长度是基于字节的。因此,您的特殊字符可能需要超过一个字节。如果仍然无效,请参阅下面的Redshift文档页面,

http://docs.aws.amazon.com/redshift/latest/dg/multi-byte-character-load-errors.html