Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

多字节字符加载错误

带有 CHAR 数据类型的列仅接受单字节 UTF-8 字符(字节值最大为 127,即十六进制的 7F),它也是 ASCII 字符集。VARCHAR 列接受多字节 UTF-8 字符,最多四个字节。有关更多信息,请参阅 字符类型

如果加载数据中的某一行包含对列数据类型无效的字符,则 COPY 将返回一个错误并在 STL_LOAD_ERRORS 系统日志表中记录一行,错误编号为 1220。ERR_REASON 字段包含无效字符的十六进制字节序列。

修复加载数据中的无效字符的替代方法是在加载过程中替换无效字符。要替换无效 UTF-8 字符,请在 COPY 命令中指定 ACCEPTINVCHARS 选项。有关更多信息,请参阅 ACCEPTINVCHARS

以下示例显示了 COPY 尝试将 UTF-8 字符 e0 a1 c7a4 加载到 CHAR 列中时的错误原因:

Copy
Multibyte character not supported for CHAR (Hint: Try using VARCHAR). Invalid char: e0 a1 c7a4

如果错误与 VARCHAR 数据类型相关,则错误原因将包含错误代码和无效的 UTF-8 十六进制序列。以下示例显示了 COPY 尝试将 UTF-8 a4 加载到 VARCHAR 字段中时的错误原因:

Copy
String contains invalid or unsupported UTF-8 codepoints. Bad UTF-8 hex sequence: a4 (error 3)

下表列出了 VARCHAR 加载错误的描述和建议解决方法。如果出现了以下错误之一,请将该字符替换为有效的 UTF-8 代码序列或删除该字符。

错误代码 描述
1 UTF-8 字节序列超出了 VARCHAR 支持的最大四字节。
2 UTF-8 字节序列不完整。COPY 在字符串结束之前没有找到多字节字符所需数量的连续字节。
3 UTF-8 单字节字符超出范围。开头字节不能是 254、255 或 128 和 191 之间(含)的任何字符。
4 字节序列中的结尾字节的值超出范围。连续字节必须在 128 和 191 之间(含)。
5 UTF-8 字符作为代理保留。代理码位 (U+D800 - U+DFFF) 无效。
6 字符不是有效的 UTF-8 字符(码位 0xFDD0 - 0xFDEF)。
7 字符不是有效的 UTF-8 字符(码位 0xFFFE 和 0xFFFF)。
8 字节序列超出最大 UTF-8 码位。
9 UTF-8 字节序列没有匹配的码位。