1

ランタイム列伝播(RCP)機能を使用してDataStage9.1を使用してDB29.7からいくつかのデータを読み取ろうとしています。一般的なアプローチは、接続の詳細とテーブル名のみを指定してクエリSQLを生成するようにDB2コネクタステージを設定することです。このアプローチはほとんどの場合機能しますが、マルチバイト文字で問題が発生しています。

この設定をしていて、読み取られるデータがCJK(中国語、日本語、または韓国語)言語のいずれかからのものである場合、^Z書き込み先のシーケンシャルファイルに文字が表示されます。このデータをデータセットに書き込むと、スキーマが列のデータ型がのstring代わりにであると誤って指定していることがわかりますustringデフォルトの型変換ドキュメントを読むと、DataStageはDB2からデータをとして読み取っていますがustring、生成されたデータセットにとして挿入しようとしているようstringです。

テーブルのテーブル定義を生成すると、そのstringタイプの列が生成されていることがわかります。ただし、テーブル定義をDB2コネクターにロードすると、デフォルトでチェックされているチェックボックスが表示されます。このチェックボックスは、Unicode拡張属性を文字列に自動的に追加します。

上記のすべての情報を使用すると、DataStageはのustring代わりに列を生成できるように見えますstringが、実行時の列の伝播では生成されません。

つまり、RCPを使用するときにDataStageにustring列を生成するように説得する方法はありますか?DB2コネクタステージに設定はありますか?プロジェクトレベルでの設定はありますか?これを制御する環境変数はありますか?そうでない場合は、すべてのテーブルのテーブル定義を作成し、発生している問題のためだけにそのデータを抽出するカスタムジョブを作成する必要がありますか?

4

1 に答える 1

1

これはDataStageの問題ではなく、DB2構成の問題です。

DB2データを処理するすべてのマシンでは、DB2CODEPAGE変数を同じ値に設定する必要があります。DB2サーバーで1208に設定されているが、DataStageマシン上のDB2クライアントで別の値に設定されている場合、書き込まれる結果は不正な形式になります。

DB2クライアントまたはサーバーがインストールされているすべてのマシンでDB2CODEPAGEが同じ値に設定されていることを確認してください。

于 2013-08-05T16:21:35.887 に答える