9
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【まとめ】決定版!現場でよく使うDb2コマンド集

Last updated at Posted at 2019-10-02

##はじめに
現場でDb2を使っており、よく使うコマンドを纏めました。

##コマンド

架空でDB名などは以下としておきます。
DB名 :「QIITADB」
スキーマ名:「UPALLNIGHT」
テーブル名:「EXAMPLE」

用途 コマンド 使用例
DB接続 connect to DB名 connect to QIITADB
DB切断  terminate  - 
スキーマ設定  set schema スキーマ名  set schema UPALLNIGHT
スキーマ参照  values(current schema)  - 
日時変換  timestamp_format('値','日時書式')  select timestamp_format('2019/10/01 12:00:00','YYYY/MM/DD HH24:MI:SS') from EXAMPLE
テーブル一覧  list tables for schema スキーマ名  list tables for schema UPALLNIGHT 
テーブル構成参照  describe table テーブル名  describe table EXAMPLE
テーブル構成コピー  create table 新テーブル名 as (select文) definition only  create table NEW_EXAMPLE as (select * from EXAMPLE) definition only 
TRUNCATE  truncate table テーブル名 immediate  truncate table EXAMPLE immediate 
Export  export to ファイル名 of del modified by timestampformat="日時書式" codepage=コードページ select文 export to File.csv of del modified by timestampformat="YYYYMMDDHHMMSS.UUUUUU" codepage=1208 select * from UPALLNIGHT.EXAMPLE
Import(全データ削除)  import from /dev/null of del replace into テーブル名  import from /dev/null of del replace into UPALLNIGHT.EXAMPLE
Import  import from ファイル名 of del modified by timestampformat="日時書式" codepage=コードページ delprioritychar 登録タイプ into テーブル名  import from File.csv of del modified by timestampformat="YYYYMMDDHHMMSS.UUUUUU" codepage=1208 delprioritychar insert into UPALLNIGHT.EXAMPLE
インデックス確認  describe indexes for table テーブル名 show detail  describe indexes for table EXAMPLE show detail 
シーケンス参照(現在値)  ①value(シーケンス名.PREVVAL)
②value(previous value for シーケンス名) 
①value(EXAMPLE_SEQ.PREVVAL)
②value(previous value for EXAMPLE_SEQ)
シーケンス参照(次の値)  ①value(シーケンス名.NEXTVAL)
②value(next value for シーケンス名) 
①value(EXAMPLE_SEQ.NEXTVAL)
②value(next value for EXAMPLE_SEQ)
シーケンス再設定  alter sequence シーケンス名 restart with 開始番号  alter sequence EXAMPLE_SEQ restart with 1 
権限付与(表・ビュー・ニックネーム)  ①grant 表・ビュー・ニックネーム権限 on table テーブル名 to 権限単位 付与先
②grant 表・ビュー・ニックネーム権限 on table テーブル名 to public
①grant select,insert,update,delete on table EXAMPLE to role EXAMPLE_ROL
②grant select,insert,update,delete on table EXAMPLE to public
権限付与(シーケンス)  ①grant シーケンス権限 on sequence シーケンス名 to 権限単位 付与先
②grant シーケンス権限 on sequence シーケンス名 to public 
①grant usage on sequence EXAMPLE_SEQ to role EXAMPLE_ROL
②grant usage on sequence EXAMPLE_SEQ to public
Runstats  runstats on table テーブル名 with distribution and detailed indexes all  runstats on table EXAMPLE with distribution and detailed indexes all 
Reorg  reorg table テーブル名 [index インデックス名] reorg table EXAMPLE [index EXAMPLE_IND] 
Reorgペンディング確認  select VARCHAR(TABSCHEMA,30) as TABSCHEMA, VARCHAR(TABNAME,30) as TABNAME, REORG_PENDING, NUM_REORG_REC_ALTERS from SYSIBMADM.ADMINTABINFO where REORG_PENDING = 'Y' - 
Reorgペンディング解除  reorg table テーブル名 reorg table EXAMPLE
Load  load from ファイル名 of del lobs from lobファイルディレクトリ名/ modefied by timestampformat="YYYYMMDDHHMMSS.UUUUUU" codepage=コードページ delprioritychar warningcount 1 messages メッセージファイル名 登録タイプ into テーブル名 copy yes to tmpディレクトリ名 nonrecoverable indexing mode incremental partitioned db config mode partition_and_load part_file_location パーティション作業用ディレクトリ/ output_dbpartnums(1 to 最大区分数) isolate_part_errs no_location  ①通常Load
load from File.csv of del modefied by codepage=1208 delprioritychar warningcount 1 messages ./log.txt insert into EXAMPLE copy yes to /work/loadtmp
②区分化Load
load from File.csv of del modefied by codepage=1208 delprioritychar warningcount 1 messages ./log.txt insert into EXAMPLE copy yes to /work/loadtmp indexing mode incremental partitioned db config mode partition_and_load part_file_location /data/work/ output_dbpartnums(1 to 18) isolate_part_errs no_location
Loadペンディング確認  select TABSHEMA, TABNAME, STATUS, ACCESS_MODE from SYSCAT.TABLES where STATUS <>'N' or ACCESS_MODE<>'F'  - 
Loadペンディング解除  load from /dev/null of del terminate into テーブル名  load from /dev/null of del terminate into EXAMPLE 
テーブル一括取得 select TABNAME from SYSCAT.TABLES where TYPE='T' and TABSCHEMA ='スキーマ名' order by TABSCHEMA,TABNAME select TABNAME from SYSCAT.TABLES where TYPE='T' and TABSCHEMA ='UPALLNIGHT' order by TABSCHEMA,TABNAME
ビュー一括取得 select TABNAME from SYSCAT.TABLES where TYPE='V' and TABSCHEMA ='スキーマ名' order by TABSCHEMA,TABNAME select TABNAME from SYSCAT.TABLES where TYPE='V' and TABSCHEMA ='UPALLNIGHT' order by TABSCHEMA,TABNAME

##おまけ

###・カタログとは??
DB2 が制御するデータに関する情報が格納されている表集合の総称。
カタログ・ビュー(SYSCAT、SYSSTAT ビュー)とテーブルの集合で構成されている。
カタログ・ビューには、表、ビュー、 索引など DB2 のオブジェクトに関する情報が含まれている。
オブジェクトを作成、変更、またはドロップすると、DB2では、カタログでそのオブジェクトを記述する行が挿入、更新、または削除される。
そのためカタログ・オブジェクトは自動的に更新されてデータベースの最新の状態が反映された状態になっている。

###・一括件数取得

//テーブル一覧を取得し、変数に格納
tab_list=`db2 -x "select TABSCHEMA ||'.'|| TABNAME from SYSCAT.TABLES where TYPE='T' and TABSCHEMA ='UPALLNIGHT' order by TABSCHEMA,TABNAME"`

//変数を元にすべてのテーブル件数を取得
date;for tab in ${tab_list};do db2 -x "select ${tab},count(1) from ${tab}";done;date

//このパターンは、REORGやRUNTATS、データ削除にも利用可能
date;for tab in ${tab_list};do db2 -v "runstats on table ${tab} with distribuion and detailed indexes all;done;date

###・Db2オプション
先頭のマイナス(-)はオプションをONへ、プラス(+)はオプションをOFFにする。

オプション 用途
-c 自動コミットON
-e SQLCODEまたはSQLSTATEを表示
-f コマンド入力を標準入力ではなくファイルから読み取り
-m INSERT/UPDATE/DELETE/MERGEの影響を受ける行数を表示
-o 出力データ及びメッセージを標準衆力に表示
-t セミコロンをステートメント終了文字として使用
-v コマンド・テキストを標準出力へエコー
-x 列名などのヘッダーなしでデータを戻す
-z すべての出力をファイルにリダイレクト

###・コードページ種類
UTF-8 ⇒ 1208
SJIS ⇒ 943
load,imoportする際は、取り込みファイルの文字コードに合わせて指定する。
DBの文字コードを指定するのではない。

##おわりに
Db2を使っている方はあまり聞いたことありませんが、少しでもお役に立てれば。
(ちなみにDb2の正式名称bは小文字です。DB2ではない。)

ご覧いただきありがとうございました!

9
15
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?