z/OS DB2 では、NULL バイト (x'00') を文字列に格納できます。ただし、PostgreSQL ではこれが許可されていません。この制限を回避するには、次の操作を行います。
- テーブルを UTF-8 データベースに格納する
UTF-8 データベースでは、SQL プログラムで DML を実行するとき、AWS が提供するデータベース移行ツールを使用するとき、MBDT の LOAD および UNLOAD ユーティリティを使用するときに、NULL バイトが UTF-8 値
(x'C680') に置き換えられます。
- プログラムを SQL(ALLOWNULLCHAR) コンパイラ指令を使用してコンパイルする
重要: アプリケーションで CHAR フィールドの NULL バイトのサポートが必要な場合は、追加の構成が必要です。詳細については、「ALLOWNULLCHAR」を参照してください。
- 環境変数 PGCLIENTENCODING=UTF8 を設定する
- PostgreSQL ODBC ドライバー (UNICODE) を使用する
- Windows または Linux のシステム ロケールを適切な 1 バイト文字セット (SBCS) 値に設定する
- Windows の場合、システム ロケールは Windows のコントロール パネルで定義されます。たとえば、[English(United States)] では Windows SBCS コード ページ 1252 が使用されます。
- Linux の場合、システム ロケールは LANG 環境変数の値によって定義されます。たとえば、LANG=en-US.iso8859-1 または LANG=en_US.iso8859-15 を設定すると、Linux SBCS コード ページ 819 (非ユーロ) または 923 (ユーロ) が使用されます。
- Windows と Linux の両方のプラットフォームについて、NULL バイトを UTF-8 値 (x'C680') にマップする SBCS コード ページを含む特別な変換テーブルを提供しています。これらの変換テーブルをインストールし、それらを検出できるようにシステムを構成する必要があります。詳しい手順については、「HCOPG の CCSID テーブルをインストールするには」を参照してください。
注: SQL プログラムに CHARSET(EBCDIC) を使用する場合、UTF-8 データベース用の EBCDIC 照合が AWS から提供されます。詳細については、AWS のドキュメントを参照してください。