DB2のingestでトランザクションを管理する

 DB2 V11で確認しています。
 DB2において固定長、または可変長のテキストファイルをデータベースにインポートするユーティリティとしてingestがあります。
このingestにおいてトランザクションを制御する場合は下記パラメータにて制御を行います・

・commit_period – コミット期間構成パラメーター
https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.1.0/com.ibm.db2.luw.admin.config.doc/doc/r0057227.html

・commit_count – コミット・カウント構成パラメーター
https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.1.0/com.ibm.db2.luw.admin.config.doc/doc/r0057226.html

 DB2 V111においてはデフォルトでは commit_period が1秒、commit_count​ が 0 (利用しない) に設定されており、処理される行数にかかわらず1秒おきにコミットされます。
 例えば500 行以下のファイルを INGEST で​インポートし、これを単一のトランザクションとして扱う場合、commit_period=0 (利用しない) 、commit_count​ =1000 を指定します。​commit_period を「1」のままcommit_count​ =1000を指定すると、1000 行処理するのに 1秒以上かかった場合、途中の行でコミットされます。なお、commit_count​ は 1000 の倍数の数値を受け入れます。

00 行以下のファイルを INGEST で​インポートし、これを単一のトランザクションとして扱う例

db2 ingest set commit_count 1000
db2 ingest set commit_period 0
db2 ingest from file ファイル名 FORMAT DELIMITED
(
        $emp_id CHAR(4),
        $emp_name CHAR(16)
)
MERGE INTO テーブル名
        ON emp_id = $emp_id
WHEN MATCHED THEN
        UPDATE SET emp_name = $emp_name
WHEN NOT MATCHED THEN
        INSERT VALUES($emp_id, $emp_name)

コメントを残す