我们在 S3 中有一个文件,它通过 COPY
加载到 Redshift 中。命令。导入失败,因为 VARCHAR(20)
值包含 Ä
正在翻译成 ..
在复制命令期间,现在对于 20 个字符来说太长了。
我已经验证了 S3 中的数据是正确的,但是 COPY
命令在导入过程中无法识别 UTF-8 字符。有没有人找到解决方案?
最佳答案
tl;博士
您的 varchar
的字节长度列只需要更大。
细节varchar
支持多字节字符 (UTF-8)数据类型,但是提供的长度以字节为单位,不是 人物。
AWS documentation for Multibyte Character Load Errors声明如下:
VARCHAR
columns accept multibyte UTF-8 characters, to a maximum of four bytes.
因此,如果您想要字符
Ä
要被允许,那么您需要为该字符允许 2 个字节,而不是 1 个字节。AWS documentation for VARCHAR or CHARACTER VARYING声明如下:
... so a
VARCHAR(120)
column consists of a maximum of 120 single-byte characters, 60 two-byte characters, 40 three-byte characters, or 30 four-byte characters.
有关 UTF-8 字符及其字节长度的列表,这是一个很好的引用:
Complete Character List for UTF-8
有关 Unicode 字符 'LATIN CAPITAL LETTER A WITH DIAERESIS' (U+00C4) 的详细信息,请访问 here .
关于amazon-s3 - S3 -> Redshift 无法处理 UTF8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27612294/