データの移入
データ移入の方法
DB2に他のシステムからのデータの移入を行う場合、LOADとIMPORTという2つの方法がある。
LOADコマンドは、コマンドが直接データイメージを作成して表スペースに挿入していくのに対し、IMPORTコマンドはINSERTコマンドをデータベースに対して発行する。このため、データがある程度より多くなると、LOADコマンドのほうがはるかに高速(通常数十倍)になる。また、LOADコマンドは、索引の作成や統計の収集を同時・高速に行うことが出来る。
LOADコマンド
処理内容
LOADコマンドは、以下の3つのフェーズを順に実行する。
- ロード
- データを既存の表に書きこむ。SAVECOUNTパラメータで指定された間隔で一貫性ポイントが確保され、メッセージファイルに書き出される。作成フェーズで使用する索引情報もここで収集。
- 作成
- ロード・フェーズで収集した情報を元に索引を作成する。
- 削除
- 固有制約違反の原因になった行を表から削除する。例外表が作成されていると、無効の行がそこに保管される。
LOADコマンドがサポートするファイル形式は、IXF(DB2の独自形式)・デリミタ・固定長の三種類である。
パラメータ
回復処理に関連する主なパラメータは以下の通り
- COPY (YES|NO)
- COPY NOを指定すると、保存ログモードで運用するためのデータのコピーを抑制するため、LOAD処理終了後に表スペースがバックアップ保留状態になる。これによるパフォーマンスの向上はせいぜい数%。デフォルトはCOPY YES。
- UNRECOVERABLE
- LOADがロールフォワード回復不能な処理であることを明示的に宣言する。読取専用の表の場合、このパラメータを指定することでパフォーマンスを向上させることが出来る。
パフォーマンスチューニングに関連する主なパラメータは以下の通り
- Fastparse
- データの正しさが確認できている場合、このパラメータを指定するとエラー処理が省略され、パフォーマンスが向上する。
- Anyorder
- パラレルロードを行う場合にレコードの挿入順を保証しないことで、パフォーマンスを向上させる。
エラー処理
LOADコマンドのロード・フェイズでは、制約検査はオフにされる。ロード・データが適切なデータタイプで無い場合には、その行はインポートされず、指定したメッセージファイルにその旨が書き出される。しかしながら、「固有キー制約違反」「参照制約違反」「不正なロード再試行によるデータ重複」による行のエラーについては、以下のような処理が行われる。
- ロード処理自体は正常に終了する
- エラー行は例外表に書き出される。例外表が無ければ、エラー行は切り捨てられる。
- 表は検査保留状態に置かれる。
- ロード終了後、ユーザがSET CONSTRAINTS文を実行して検査保留状態から回復する。
EXPORTコマンド
EXPORTコマンドは、SELECT文の問い合わせ結果を元にデータを書き出す。サポートするファイル形式は、IXF・デリミタに加え、WSPフォーマットの3形式である(固定長テキストはサポートしない)。使用できる主なパラメータは以下の通り:
- OF (DEL|IXF|WSF)
- エクスポートファイルの形式
- METHOD N (column-name, ...)
- SELECT文とは別の列名を使用する。IXFとWSFの場合に有効
- MODIFIED BY filetype-mod ...
- デリミタファイルで使用する制御文字を変更する。COLDEL(デリミタ),CHARDEL(文字ストリング),DECPT(小数点),DATESISO(日付形式)など
IMPORTコマンド
IMPORTコマンドは、外部テーブルの各行をINSERT文でテーブル等に挿入していく。SELECT文の問い合わせ結果を元にデータを書き出す。サポートするファイル形式は、IXF・デリミタ・固定長・WSPフォーマットの4形式である。使用できる主なパラメータは以下の通り:
- 使用可能なIMPORTモード
-
- INSERT
- INSERT_UPDATE(同一キーの行は置き換え)
- REPLACE
- CREATE(下と共にIXFファイルの場合のみに使用可能)
- REPLACE_CREATE(同一テーブルがあれば置き換え)
- COMMITCOUNT
- コミットを行う間隔
- METHOD (L|N|P)
- インポートする列を、カラム範囲(L,固定長のみ)・列名(N)・列番号(P)で指定
LOADとIMPORTの比較
LOADとIMPORTの相違点は以下のようなものである。
| IMPORT | LOAD |
| 低速(少量データの場合にはオーバーヘッドがない分高速になることも) |
高速 |
| 存在しない表・索引の作成が可能(IXF形式の場合) |
表・索引は事前に存在が必要 |
| WSF形式をサポート |
IXF・デリミタ・固定長のみ |
| ビューへのインポートが可能 |
表・エイリアスのみ |
| 挿入はロギングされる |
作業はほとんどロギングされない |
| トリガが起動される |
トリガは起動されない |
|
|
| 作業が中断してもそのまま処理が可能 |
作業が中断すると表領域の回復が必要 |
| SMPをサポートしない |
SMPをサポートする |
| 全ての制約性チェックを行う |
制約性チェックは行わない |
| 索引作成・統計情報収集は別途行うべき |
索引作成・統計情報収集を同時・高速に行うことが出来る |
トップページに
Last modified: Mon Nov 22 12:42:13 +0900 2021