Database JUNKY

MySQL,MariaDBを中心としたブログです

もしかしたら役に立つかもしれない、SQLで加工するDB2コマンド集

役にたつかな?-。たたないかなー?と 思いつつ、DB2SQLを利用し、DB2ユティリティーのコマンドを生成するSQLを作ってみました。

  • EXPORT文 DB2のデータを、CSVや、IXFファイルに吐き出す処理をSQLで作ってみました。今回はDEL形式(CSV)です。EXPORTユティリティを利用して、EXPORT文を生成しています。 DB2のテーブル情報は、SYSCAT.TABLESにありますので、このあたりのTABSCHEMA,TABNAMEを利用すれば色々作れるのではないかと思います。
EXPORT TO .\EXP_SQL_CREATE.sql OF DEL MODIFIED BY NOCHARDEL SELECT 'EXPORT TO .\' || RTRIM(TABSCHEMA) || '.' || RTRIM(TABNAME) || '.csv OF DEL SELECT * FROM ' || RTRIM(TABSCHEMA) || '.' || RTRIM(TABNAME) || ';' FROM SYSCAT.TABLES WHERE TABSCHEMA IN('DB2INST1','DB2ADMIN'');
  • DB2LOOK 次にDBのテーブル単位での定義情報(DDL)を一括で生成するSQLを作ってみます。要領は同じです。
EXPORT TO .\EXP_DDL_CREATE.bat OF DEL MODIFIED BY NOCHARDEL SELECT 'db2look -d MYDATABASE -e -z ' || RTRIM(TABSCHEMA)  || ' -t ' || RTRIM(TABNAME) || ' -o .\' || RTRIM(TABSCHEMA) || '.' || RTRIM(TABNAME) || '.DDL.SQL' FROM SYSCAT.TABLES WHERE TABSCHEMA IN('DB2INST1','DB2ADMIN');

※ベースをWindowsで作りましたので、Linuxの場合は、パスの指定方法が変わります。 NOCHARDELとは、EXPORT時に、”(ダブルクォーテーション)を追記しないという意味です。 ※MYDATABASEはご自身のデータベース名に書き換えてください。