「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」
マルチバイト文字のロードエラー
CHAR データ型の列はシングルバイト UTF-8 文字のみを最大 127 バイトまで、または 16 進数の 7F まで受け取ります。これは ASCII 文字セットでもあります。VARCHAR 列はマルチバイト UTF-8 文字を最大 4 バイトまで受け取ります。詳細については、「文字型」を参照してください。
ロードデータの行に列のデータ型として無効な文字が含まれる場合、COPY はエラーを返し、STL_LOAD_ERRORS システムログテーブルの行にエラー番号 1220 がログ記録されます。ERR_REASON フィールドには無効な文字のバイトシーケンスが 16 進数で含まれます。
ロードデータの無効な文字を修正する代替策は、ロードプロセス中に無効な文字を置換することです。無効な UTF-8 文字を置換するには、COPY コマンドに ACCEPTINVCHARS オプション付けて実行します。詳細については、「ACCEPTINVCHARS」を参照してください。
次の例は、COPY で UTF-8 文字の e0 a1 c7a4 を CHAR 列にロードしようとしたときのエラーの理由を示しています。
Multibyte character not supported for CHAR (Hint: Try using VARCHAR). Invalid char: e0 a1 c7a4
エラーが VARCHAR データ型に関連する場合、エラーの理由にはエラーコードと、無効な UTF-8 16 進数シーケンスが含まれます。次の例は、COPY で UTF-8 a4 を VARCHAR フィールドにロードしようとしたときのエラーの理由を示しています。
String contains invalid or unsupported UTF-8 codepoints. Bad UTF-8 hex sequence: a4 (error 3)
次のテーブルには、VARCHAR ロードエラーの説明と回避策提案を記載しています。これらのエラーの 1 つが発生した場合、文字を有効な UTF-8 コードシーケンスで置換するか、文字を削除します。
エラーコード | 説明 |
---|---|
1 | UTF-8 バイトシーケンスが VARCHAR でサポートされる 4 バイトの上限を超えています。 |
2 | UTF-8 バイトシーケンスが不完全です。COPY を実行したが、文字列の終わりの前にあるマルチバイト文字の連続バイトが予想された数ではありませんでした。 |
3 | UTF-8 シングルバイト文字が範囲外です。開始バイトを 254、255、または 128 から 191 までの間の任意の文字 (128 と 191 を含む) にすることはできません。 |
4 | バイトシーケンスの後続バイトの値が範囲外です。連続バイトは 128 から 191 まで (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 バイトシーケンスに一致するコードポイントがありません。 |