そらとぶへび

仕事・プライベートを通しての気づき、JavaやPHP、データベースやサーバの話などこつこつと書いていきます

DB2のコマンド整理

DB2を使うことになったのでよく使いそうなコマンドを整理しておく。徐々に更新していくかも。
対象バージョンはV 9.7




データベースへの接続

db2 connect to {データベース名} user {username} using {password}

データベース接続の解除

b2 connect reset / db2 terminate

※resetとterminateの違いは?
https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0001973.html
TERMINATE と CONNECT RESET は両方ともデータベースへの接続を中断しますが、 TERMINATE のみがバックエンド・プロセスを終了します。

SQLの実行

db2 "select * from employee"

スキーマ名の指定

db2 set schema SCHEMANAME



ファイルのコマンド・SQLを実行する。

$ db2 -tvf FILENAME

-t: セミコロンをステートメントの終了文字とする
-v: 実行結果を標準出力に出す
-f: ファイルを入力にする
その他のオプションは以下のサイトへ。
https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_9.7.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0010410.html

データをファイルへの書き出す。

db2 export to FILENAME of del "select * from employee"

「of del」は出力ファイルの形式指定で、カンマ(,) 区切り文字付き ASCII フォーマットで出力される。
他の出力フォーマットとしてixf(DB2バイナリ形式)がある。

データをファイルから読み込む。

db2 import from FILENAME of del [insert|replace] into TABLENAME

db2 load from FILENAME of del [insert|replace] into TABLENAME

insertは追加、replaceは洗い替えを行う。
大量データの場合はloadコマンドの方が高速に処理できる。ただしトランザクションログを残さない。
インポート・ユーティリティーとロード・ユーティリティーの相違点
https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_9.7.0/com.ibm.db2.luw.admin.dm.doc/doc/r0004639.html

リスト表示関連

テーブル一覧の確認

db2 list tables

SQLでも確認可能
SELECT * FROM SYSIBM.TABLES;
SELECT * FROM SYSIBM.TABLES WEHRE TABLE_SCHEMA = 'スキーマ名';


データベースディレクトリーの内容をリスト表示

db2 list db directory

テーブルスペースの情報

db2 list tablespaces show detail

テーブル定義を確認

db2 DESCRIBE TABLE test_table


DB環境の構築・破棄

DB作成

db2 create database DBNAME using codeset UTF-8 territory JP pagesize 8K