Redshift - 插入目标时截断字符串

时间:2015-04-26 07:49:42

标签: amazon-redshift

我有两张桌子。表A是操作存储,表B是目标表。

表A DDL: A列Varchar(1000)

表B DDL: B栏Varchar(250)

所以我试图插入截断的列A,如下所示: 插入表B(选择左(表a.column a,249)),但它给出了错误

“错误:字符类型的值太长”

我也试过substring尝试截断文本,但无济于事。请注意,A列中也有阿拉伯语文本 - 但它在表A中不是问题。

非常感谢任何帮助/建议!

2 个答案:

答案 0 :(得分:3)

要解决多字节字符问题,可以使用:: VarChar([some length])将字段强制转换为所需的VarChar大小。举个例子,你可以这样做:

插入表B(选择表a.column a :: VarChar(250))

答案 1 :(得分:2)

问题是每个阿拉伯语符号占用超过1个字节,因为RedShift是Unicode DB。 varchar定义以字节为单位。因此,为了安全起见,您可以将所有内容划分为4.