データの移動に関する Unicode のための考慮事項

エクスポート、インポート、およびロード・ユーティリティーは、 非 Unicode データベースに接続されている Unicode クライアントで使用される場合にはサポートされません。

この項で説明されているとおり、 Unicode データベースには DEL、ASC、および PC/IXF ファイル・フォーマットがサポートされます。

Unicode データベースから ASCII 区切り文字付き (DEL) ファイルにエクスポートする際に、 すべての文字データはアプリケーション・コード・ページに変換されます。 文字ストリングと GRAPHIC ストリング・データの両方が、 クライアントの同じ SBCS または MBCS コード・ページに変換されます。 区切り文字付き ASCII ファイル全体でコード・ページは 1 つしかないため、 これがどのデータベースのエクスポートの場合でも所定の動作となり、変更できません。 したがって、区切り文字付き ASCII ファイルにエクスポートする場合には、 ご使用のアプリケーション・コード・ページに存在する UCS-2 文字だけが保管されます。 その他の文字は、アプリケーション・コード・ページのデフォルト置換文字に置き換えられます。 UTF-8 クライアント (コード・ページ 1208) の場合、 UTF-8 クライアントによりすべての UCS-2 文字がサポートされているため、 データの脱落はありません。

ASCII ファイル (DEL または ASC) から Unicode データベースにインポートする場合、 文字ストリング・データはアプリケーション・コード・ページから UTF-8 に変換され、 GRAPHIC ストリング・データはアプリケーション・コード・ページから UCS-2 に変換されます。 データの脱落はありません。 異なるコード・ページに保管された ASCII データをインポートする場合には、 IMPORT コマンドを発行する前にデータ・ファイル・コード・ページを変更しなければなりません。 DB2CODEPAGEレジストリー変数をASCIIデータ・ファイルのコード・ページに設定するか、codepageファイル・タイプ修飾子でデータ・ファイルのコード・ページを指定できます。

SBCS および MBCS クライアントの有効な ASCII 区切り文字の範囲は、それらのクライアントの Db2® で現在サポートされているものと同じです。 UTF-8 クライアントの有効な区切り文字の範囲は X'01' から X'7F' で、通常の制約事項が適用されます。

Unicode データベースから PC/IXF ファイルにエクスポートする際には、 文字ストリング・データはクライアントの SBCS/MBCS コード・ページに変換されます。 GRAPHIC ストリング・データは変換されず、 UCS-2 (コード・ページ 1200) に保管されます。 データの脱落はありません。

PC/IXF ファイルから Unicode データベースにインポートする際には、 文字ストリング・データは PC/IXF ヘッダーに格納される SBCS/MBCS コード・ページに、 GRAPHIC ストリング・データは PC/IXF ヘッダーに格納される DBCS コード・ページにあるものと見なされます。 文字ストリング・データは、インポート・ユーティリティーにより、 PC/IXF ヘッダーで指定されるコード・ページからクライアントのコード・ページに変換され、 その後 (INSERT ステートメントによって) クライアント・コード・ページから UTF-8 に変換されます。 GRAPHIC ストリング・データは、 インポート・ユーティリティーによって、 PC/IXF ヘッダーで指定される DBCS コード・ページから UCS-2 (コード・ページ 1200) に直接変換されます。

ロード・ユーティリティーは、データをデータベースに直接入れ、 デフォルトでは、ASC または DEL ファイル内のデータは、 データベースのコード・ページにあるものと見なします。 したがって、デフォルトでは、ASCII ファイルのコード・ページ変換は実行されません。 データファイルのコードページが明示的に指定される場合(codepageファイルタイプ修飾子を使用)、ロードユーティリティはこの情報を使用して、データをロードする前に、指定コードページからデータベースコードページに変換します。 PC/IXF ファイルでは、ロード・ユーティリティーは、 常に IXF ヘッダーに指定されるコード・ページからデータベース・コード・ページ (CHAR の場合は 1208、 GRAPHIC の場合は 1200) に変換します。

DBCLOB ファイルのコード・ページは常に UCS-2 では 1200 です。 CLOB ファイルのコード・ページは、 インポート、ロード、あるいはエクスポートされるデータ・ファイルのコード・ページと同じです。 例えば、PC/IXF フォーマットを使用してデータをロードまたはインポートする際には、 CLOB ファイルは、PC/IXF ヘッダーによって指定されるコード・ページにあるものと見なされます。 DBCLOB ファイルが ASC または DEL フォーマットの場合には、 ロード・ユーティリティーは、CLOB データがデータベースのコード・ページにあるものと見なし、 インポート・ユーティリティーは、これがクライアント・アプリケーションのコード・ページにあるものと見なします。

Unicode データベースの場合は、以下の理由により、常にnochecklengths 修飾子が指定されます。
  • DBCS コード・ページのないデータベースには任意の SBCS を接続できます。
  • UTF-8 フォーマットの文字ストリングは通常、 クライアント・コード・ページにあるものとは異なる長さになります。

コード・ページ 1394、1392、および 5488 に関する考慮事項

インポート、エクスポート、およびロード・ユーティリティーを使用して、 中国語コード・ページ GB 18030 (コード・ページ ID 1392 および 5488) および 日本語コード・ページ Shift JIS X0213 (コード・ページ ID 1394) から Db2 Unicode データベースに データを転送できます。 加えて、エクスポート・ユーティリティーを使用して、Db2 Unicode データベースから GB 18030 または Shift JIS X0213 コード・ページ・データにデータを転送することもできます。

たとえば、次のコマンドは、リモート接続されたクライアントにあるShiftJISX0213データファイルu/jp/user/x0213/data.delをMYTABLEにロードします。

   db2 load client from /u/jp/user/x0213/data.del 
   of del modified by codepage=1394 insert into mytable
   
ここで、MYTABLE は Db2 Unicode データベース内にあります。

Unicode クライアントと Unicode サーバーの間の接続のみがサポートされるため、Unicode クライアントを使用するか、ロード・ユーティリティー、インポート・ユーティリティー、またはエクスポート・ユーティリティーを使用する前に Db2 レジストリー変数 DB2CODEPAGE を 1208 に設定する必要があります。

コード・ページ 1394 から Unicode に変換すると、拡張が行われます。 例えば、2 バイト文字は、GRAPHIC 列で 2 つの 16 ビット Unicode 文字として格納されます。 Unicode データベースのターゲット列は、 拡張された Unicode バイトを入れるのに十分な幅であることを確認する必要があります。

非互換性

Unicode データベースに接続されているアプリケーションの場合、 GRAPHIC ストリング・データは常に UCS-2 (コード・ページ 1200) にあります。 非 Unicode データベースに接続されるアプリケーションの場合、 GRAPHIC ストリング・データは、アプリケーションの DBCS コード・ページにあるか、 またはアプリケーション・コード・ページが SBCS の場合には許可されません。 例えば、日本語の非 Unicode データベースに 932 クライアントが接続される場合、 GRAPHIC ストリング・データはコード・ページ 301 に入れられます。 Unicode データベースに接続されている 932 クライアント・アプリケーションの場合、 GRAPHIC ストリング・データは UCS-2 エンコード方式になります。