データベース - IBM DB2 - テーブルをコピーする

 
 まあ、表題のような機会があったので、メモメモ。  これは IBM さんのサイトを参考にしていますが、リンクを張ってもうまくたどり着けないのでリンクは掲載しません。
1. 定義のコピー
2. データのコピー

1. 定義のコピー

 以下「DB2 コマンドウィンドウ - 管理者」というコマンドプロンプトでの作業です。(プロンプトの文字は省略してあります)  「CREATE TABLE の LIKE オプションを使用する方法」というのもあるようですが、これは、インデックス等がコピーされないらしいので・・・省略。  エクスポートが

db2look -d データベース名 -a -e -t コピー元テーブル名 -o 出力先ファイル名
 ユーザ名、パスワードを含めるには -i -w オプションを使用して

db2look -d データベース名 -a -e -i ユーザ名 -w パスワード -t コピー元テーブル名 -o 出力先ファイル名
 となります。  で、出力したファイルをエディタで開いてコピー元テーブル名をコピー先テーブル名に書き換えます。  インポートが

db2 connect to データベース名
db2 -tvf 入力ファイル名
 わたしが使用する、主なオプションは
オプション意味
-t セミコロン (;) を終了文字として使用する。
-f 入力ファイル名ファイルを標準入力の代わりに使用する。
-v 結果を標準出力に出力する。
-z 出力先ファイル名結果をファイルに出力する。

2. データのコピー

 大きいテーブルであれば、カーソル LOAD とかを使用しなければならないようですが、小さいテーブルであれば、通常の INSERT SELECT でなんとかなりそうです。

db2 insert into コピー先テーブル名 select * from コピー元テーブル名