クロスローダー機能を使用したデータのロード
LOAD ユーティリティーは、動的 SQL SELECT ステートメントの出力を表に直接 ロードすることができます。 動的 SQL ステートメントは、ローカル・サーバーのデータ、または DRDA に準拠する任意のリモート・サーバーのデータに対して実行することができます。 この機能は、Db2 ファミリー・クロス・ローダー機能と呼ばれます。

始める前に

このタスクについて
この機能によって、単一の LOAD ジョブを使用して、1 つのロケーションから別のロケーション へ、または同一ロケーションの 1 つの表から別の表へ、データを転送することができます。 このクロスローダー機能への入力は、他のソースからも可能です。 Db2 for z/OS®。 IBM® 情報統合機能を使用して、 Oracle や Sybase などの多様なソースからデータにアクセスできます。また、 Db2 データベースサーバーのファミリー全体に
プロシージャー
クロスローダー機能を使用してデータをロードするには、次のようにします。
結果
LOAD ジョブをサブミットする場合、DB2 はカーソル定義の SELECT ステートメントについて構文解析を行い、エラーを検査します。 このステートメントが無効な場合、LOAD ユーティリティーはエラー・メッセージを出し、 実行を妨げている条件を示します。 このステートメント構文が有効なのに、実行時にエラーが発生する場合も、LOAD ユーティリティーは エラー・メッセージを出します。 エラーが検出されると、ユーティリティーは終了します。 カーソルの from 文節に data-change-table-reference を指定すると、 ロードが失敗した場合でも、ソースに対する変更はコミットされます。
エラーがなかった場合、このユーティリティーは、以下の規則に従って、 カーソルで示された結果表を、指定されたターゲット表にロードします。
- LOAD は、順序ではなく、名前によって、入力データの列をターゲット表の列にマッチングします。
- カーソル内の列数がロードされる表の列数よりも少ない場合は、DB2 は 欠落している列にそのデフォルト値をロードします。 この欠落している列が NOT NULL としてデフォルトなしで定義されている場合は、 この LOAD ジョブは失敗します。
- ソース列が NULLABLE と定義されていて、対応する ターゲット列はデフォルトなしで NOT NULL と定義されている場合、この LOAD ジョブは失敗します。
- IGNOREFIELDS YES を指定した場合は、LOAD は、ターゲット表に存在しない入力データの 列はいずれもスキップします。
- ターゲット表のデータ・タイプがカーソルのデータ・タイプと一致しない場合は、DB2 は、 可能な限りデータを変換しようとします。 変換が失敗した場合は、LOAD ジョブも失敗します。 カーソル宣言の SELECT ステートメントで SQL 変換機能を使用することによって、このような 変換エラーを回避できることがあります。
- 入力データのコード化スキームがターゲット表のコード化スキームと異なる場合、DB2 はコード化スキームを自動的に変換します。 ターゲット表の長さ定義は変換後データが収まるものにしてください。
- ターゲット表に GENERATED ALWAYS 列がある場合、そこにデータをロードしようとすると、LOAD ジョブが失敗します。 この状態を回避するには、このカーソルについて SELECT ステートメントでこれらの列を指定しないか、これらの列をオーバーライドすることを LOAD ステートメントで指定します。
また、入力データまたはターゲット表内の特殊タイプに対してキャスト関数を指定する必要は ありませんが、SQL 内に付け加えられた WHERE 文節に対してキャスト関数を追加する必要がある場合もあります。