Amazon redshift 红移-插入到目标时截断字符串

Amazon redshift 红移-插入到目标时截断字符串,amazon-redshift,Amazon Redshift,我有两张桌子。表A是一个操作存储,表B是目标表 表A DDL: A列Varchar(1000) 表B DDL: B列Varchar(250) 因此,我尝试插入截断列A,如下所示: 插入表B(选择左侧(表a.a列,249)),但它给出了错误 “错误:字符类型的值太长” 我也尝试过使用子字符串来截断文本,但没有效果。请注意,A列中也有阿拉伯文文本,但在表A中没有问题 如有任何帮助/建议,将不胜感激 问题在于,由于红移是Unicode DB,每个阿拉伯符号占用的字节数超过1个。varchar定义以字节

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

表A DDL: A列Varchar(1000)

表B DDL: B列Varchar(250)

因此,我尝试插入截断列A,如下所示: 插入表B(选择左侧(表a.a列,249)),但它给出了错误

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

我也尝试过使用子字符串来截断文本,但没有效果。请注意,A列中也有阿拉伯文文本,但在表A中没有问题


如有任何帮助/建议,将不胜感激

问题在于,由于红移是Unicode DB,每个阿拉伯符号占用的字节数超过1个。varchar定义以字节为单位。为了安全起见,你可以把所有的东西都除以4

要解决多字节字符的问题,可以使用::VarChar([某些长度])将字段强制转换为所需的VarChar大小。例如,您可以执行以下操作:


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

我怀疑这是全部错误。它可能表示
值对于字符变化(250)
来说太长。虽然红移不是真正的PostgreSQL,但谁知道呢。显示完整、准确的错误消息和正在运行的确切SQL。错误:值对于字符类型详细信息过长:--------------------------------------错误:值对于字符类型代码过长:8001上下文:值对于类型字符变化过长(250)查询:769317位置:funcs_string.hpp:390进程:query0_44[pid=12023]-----------------------------------------------------你好,尤里。是的,情况似乎确实如此。我已经在目标表上将它设置为varchar(140),到目前为止,一切都很好。如果我有代表的话,我会投你一票!谢谢这一直困扰着我!谢谢,我只能投一次票,但我希望能投一千票!