はじめに
端末に用意したDb2環境を利用して
Exportコマンド&Importコマンドの試し打ちをした際のログです。
環境情報
- DB2 v11.5
- CentOS Linux 7 (Core)
テーブル移行のハンズオン
以下記事で作成したSAMPLEデータベースのSALESテーブルを対象に行います。
現状のレコード数を確認
$ db2 'select count(*) from sales' 1 ----------- 131589 1 record(s) selected.
CSV形式で出力する
$ db2 "export to /tmp/testdb.csv of del select * from sales" SQL3104N The Export utility is beginning to export data to file "/tmp/testdb.csv". SQL3105N The Export utility has finished exporting "131589" rows. Number of rows exported: 131589
確かにCSV区切りでデータができていることが確認できます。
$ head /tmp/testdb.csv 20051231,"LUCCHESSI","Ontario-South",1 20051231,"LEE","Ontario-South",3 ...
テーブルの中身を全件削除する
万が一にもデータが喪失する可能性があるのでテスト環境にて実施ください。
$ db2 'delete from sales' DB20000I The SQL command completed successfully.
$ db2 'select count(*) from sales' 1 ----------- 0 1 record(s) selected.
出力したデータを取り込む
$ db2 "import from /tmp/testdb.csv of del insert into sales" SQL3109N The utility is beginning to load data from file "/tmp/testdb.csv". SQL3110N The utility has completed processing. "131589" rows were read from the input file. SQL3221W ...Begin COMMIT WORK. Input Record Count = "131589". SQL3222W ...COMMIT of any database changes was successful. SQL3149N "131589" rows were processed from the input file. "131589" rows were successfully inserted into the table. "0" rows were rejected. Number of rows read = 131589 Number of rows skipped = 0 Number of rows inserted = 131589 Number of rows updated = 0 Number of rows rejected = 0 Number of rows committed = 131589
Importに成功している。
$ db2 'select count(*) from sales' 1 ----------- 131589 1 record(s) selected.
以下、補足です。
補足
行と列の区切り文字付きの ASCII形式であるdel
を利用しましたが、UNIX⇔Windowsにてデータを移行する場合は行区切り文字データの変換を防ぐためにIXF形式が推奨されています。
以上、ご参考になれば幸いです。