リモート・クライアント・システムからのデータのロード

リモート・クライアント上のフラット・ファイル (外部表) または名前付きパイプから、 Db2 サーバー上の Db2® データベース表にデータをロードできます。リモート・クライアント上のフラット・ファイル (外部表) から Db2 サーバー上の Db2 データベース表にデータをロードできます。

名前付き外部表を使用したデータのロード

以下のコマンドを発行して、外部表から Db2 サーバー上のデータベース表にデータを挿入します。

INSERT INTO EMPLOYEE SELECT * FROM EXT_EMPLOYEE

一時外部表を使用したデータのロード

以下のコマンドを発行して、一時外部表から Db2 サーバー上のデータベース表にデータを挿入します。
INSERT INTO EMPLOYEE SELECT * FROM external '/tmp/employee.dat' USING (delimiter ',' MAXERRORS 10 SOCKETBUFSIZE 30000 REMOTESOURCE 'JDBC' LOGDIR '/logs' )

ロード操作エラーの詳細がログ・ファイルに記録され、不良な行の詳細が不良ファイルに記録されます。 外部表の作成 SQL ステートメントで LOGDIR が指定されていない場合、 IBM® Data Server Driver for JDBC and SQLJ は、ログ・ファイルまたは不良ファイルを外部データ・ファイル・ディレクトリーに書き込みます。 外部データ・ファイル・ディレクトリーにアクセスできない場合は、ファイルはドライバーの出力ディレクトリーに書き込まれます。

デフォルトの出力ディレクトリーは、システムの一時的な保管場所 (例えば、Windows の場合は通常 c:\user\home\AppData\Local\Temp、Linux または AIXの場合は /tmp) です。 デフォルトの出力ディレクトリーを変更するには、db2.jcc.outputDirectory グローバル・プロパティーを構成します。

同じ名前のログ・ファイルまたは不良ファイルが存在する場合は、新しいログ・ファイルまたは不良ファイルの内容がそのファイルに追加されます。 IBM Data Server Driver for JDBC and SQLJ は、それ自体で固有のファイル名を生成しようとはしません。

IBM Data Server Driver for JDBC and SQLJ には、SQL 実行用に生成されたログまたは不良ファイルをフェッチするメソッドは用意されていません。 生成されたログ・ファイルまたは不良ファイルは、現在の出力場所に書き込まれます。

ログ・ファイル名または不良ファイル名の取得

JCC および DB2Statement インターフェースの一部として、クラス ExternalTableResult は、表 1 に記載している API を使用して、ログ・ファイル名、不良ファイル名、およびエラー情報を公開します。
表 1. ExternalTableResult メソッド
ExternalTableResult のメソッド 目的
Throwable getError () ログ・ファイルまたは不良ファイルの書き込み中に最初に発生したエラーを返します。
String getLogFileName () ログ・ファイルの名前を返します。
String getBadFileName() 不良ファイルの名前を返します。
以下の例に示すとおり、アプリケーションは DB2Statement インターフェースのこれらの public メソッドを呼び出すことができます。
 Statement stmt = con.createStatement();
stmt.execute(str);
ExternalTableResult lr = ((DB2Statement) stmt).getExternalTableResult ();
 
String logFileName = lr.getLogFileName ();
String badFileName = lr.getBadFileName ();
Throwable error = lr.getError();