IBM DB2 - エクスポート・インポート - .csv

 クラウディア
1. 概要
2. エクスポート
3. インポート

1. 概要

 普段、テーブルを「.csv」「.tsv」の形式で、エクスポートしたり、インポートしたりするのは、「A5:SQL Mk2」を使用することが多いのですが。  事情があって、直接「IBM DB2」のデータベースからエクスポートして、インポートする必要があったのです。  いつもは、なかなか思うようにできなかったのですが、うまいこといったので、メモを残しておきます。  ただし、これ、テーブルに「BLOB」の列が存在する場合、うまくいきません。「BLOB」カラムを含むものをエクスポートする場合は、次ページをご参照ください。  サーバ・クライアント共に、「Windows」で、「Windows」での文字コードは、「SHIFT-JIS」であるものとします。  本ページは、下記のサイトを参考にさせていただきました。
Db2のEXPORT/IMPORTコマンドで文字コード変換を行う!」
「DB2 の DB とクライアントのキャラセットの違いによる文字化けの確認」
「【Db2】データベースへの接続と切断

2. エクスポート

 クライアントマシンから、「DB2 コマンドウィンドウ」を開いて。  下記でまず、接続。

db2 CONNECT TO データベース USER ユーザ名 USING パスワード
 下記のような表示があります。

   データベース接続情報

 データベース・サーバー = DB2/アーキテクチャ バージョン
 SQL 許可 ID            = ユーザ
 ローカル・データベース別名 = データベース
 下記のコマンドで、「.csv」へエクスポート。

db2 EXPORT TO ファイル名.csv of DEL SELECT * FROM テーブル
 下記のような表示があります。

SQL3104N  エクスポート・ユーティリティーが、ファイル "ファイル名.csv"
へのデータのエクスポートを開始しています。

SQL3105N  エクスポート・ユーティリティーが、"59"
行のエクスポートを完了しました。

エクスポートされた行数:  59
 行数は、テーブルによってまちまちです。  データベースを切断します。

db2 TERMINATE
 下記の表示があります。

DB20000I  TERMINATE コマンドが正常に完了しました。
 「DISCONNECT」にしたら、エラーになりました。  クライアントだと、「DISCONNECT」は、エラーになるのかしら?  ちゃんと切断されたか気になったので、サーバで、「db2 list applications」で確認してみましたらば、きちんと切断されておりました。

3. インポート

 出力した、「.csv」をインポートします。

db2 CONNECT TO データベース USER ユーザ名 USING パスワード
 出力は、前項と同じなので、割愛。  全行入力するので、テーブルをクリア。

db2 TRUNCATE TABLE テーブル
 下記の出力。

DB20000I  SQL コマンドが正常に完了しました。
 インポート。

db2 IMPORT FROM ファイル名.CSV OF DEL MODIFIED BY CODEPAGE=943 REPLACE INTO テーブル
 「MODIFIED BY CODEPAGE=943」は、文字コードの変換を行っています。なんかコードが違うような気がしますが、これでうまくいきます。  「REPLACE」は、別のワードかもしれないが、全部クリアしているので、うまくいきます。  下記の出力。

SQL3109N  ユーティリティーが、ファイル "ファイル名.CSV"
からデータのロードを開始しています。

SQL3110N  ユーティリティーが処理を完了しました。  "59"
行が、入力ファイルから読み取られました。

SQL3221W  ...COMMIT WORK が開始されました。入力レコード・カウント = "59"

SQL3222W  ...すべてのデータベース変更の COMMIT が成功しました。

SQL3149N  "59" 行が、入力ファイルから処理されました。 "59"
行が、正常に表に挿入されました。  "0" 行が、拒否されました。

読み込まれた行数        = 59
スキップされた行数      = 0
挿入された行数          = 59
更新された行数          = 0
拒否された行数          = 0
コミットされた行数      = 59
 行数は、前項と同様。  前項と同様、切断します。  後で、テーブルを確認したら、うまいことはいっておりました。
ハイスピードプラン