LOADコマンドの入力ファイルにCURSOR名を指定することで、テーブルからテーブルへ直接データをLOADすることが出来ます。
方法
以下のように、LOADコマンドにDECLAREしたCURSOR名とデータタイプCURSORを指定するだけです。
DECLARE csr CURSOR
FOR SELECT * FROM schema1.table1 ;
LOAD FROM csr OF CURSOR INSERT INTO schema2.table2 ;
さらに、CURSORをリモートDBのテーブルに対して定義することで、DB間でデータを高速にコピーすることもできます。これはフェデレーションの設定がなくても、リモートDBをカタログさえしていれば実行可能です。
CATALOG TCPIP NODE rmtinst REMOTE hostname SERVER svcname ;
CATALOG DATABASE rmtdb AT NODE rmtinst ;
DECLARE csr CURSOR
DATABASE rmtdb
USER username
USING password
FOR SELECT * FROM rmtschema.rmttable ;
LOAD FROM csr OF CURSOR INSERT INTO localschema.localtable ;
参考
- IBM developerWorks - Fast and easy data movement using DB2's LOAD FROM CURSOR feature
- DB2 for Linux UNIX and Windows 11.1.0 - LOAD command
-
DB2 for Linux UNIX and Windows 11.1.0 - DECLARE CURSOR statement
- DECLARE CURSORでリモートDBを指定するオプションはCLPインターフェース限定の機能であるため、こちらには記載されていません。次の箇所を参照してください。
- DB2 for Linux UNIX and Windows 11.1.0 - Using command line SQL statements and XQuery statements