(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Db2】特定データベースの中身を確認するコマンド群

スポンサーリンク

はじめに

Db2の初学者の方向けに、Sampleデータベースを作成してそのデータベースのとある表に格納されているレコードを表示する手順とその周辺情報を確認する手順について説明します。

コマンド実行環境は以下にて用意しています。

環境情報
  • DB2 v11.5
  • CentOS Linux 7 (Core)

Sampleデータベースを作成する

db2inst1にスイッチを行い以下コマンドにてテスト用のデータベースを作成できます。

$ db2sampl -sql -xml
  Creating database "SAMPLE"...
  Connecting to database "SAMPLE"...
  Creating tables and data in schema "DB2INST1"...
  Creating tables with XML columns and XML data in schema "DB2INST1"...
  'db2sampl' processing complete.

以下コマンドにてデータベースの一覧が確認できるので

$ db2 list db directory
...
 Database alias                       = SAMPLE
 Database name                        = SAMPLE
 Local database directory             = /database/data
 Database release level               = 15.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            =
 Alternate server port number         =
...

「SAMPLE」というデータベースができていることが分かります。

テーブル一覧を確認する

先ほど作成したデータベースに接続を行い

$ db2 connect to sample
   Database Connection Information
 Database server        = DB2/LINUXX8664 11.5.0.0
 SQL authorization ID   = DB2INST1
 Local database alias   = SAMPLE

以下コマンドにてデータベース内に存在する表がアルファベット順に表示されます。

$ db2 list tables

Table/View                      Schema          Type  Creation time
------------------------------- --------------- ----- --------------------------
ACT                             DB2INST1        T     ..
ADEFUSR                         DB2INST1        S     ..
...
SALES                           DB2INST1        T     ..
...
VSTAFAC2                        DB2INST1        V     ..

  47 record(s) selected.

今回は「SALES」テーブルの中身を確認することとします。

表の構造を調べる

以下コマンドにて表の中の型が確認できます。

$ db2 describe table sales

                                Data type                     Column
Column name                     schema    Data type name      Length     Scale Nulls
------------------------------- --------- ------------------- ---------- ----- ------
SALES_DATE                      SYSIBM    DATE                         4     0 Yes
SALES_PERSON                    SYSIBM    VARCHAR                     15     0 Yes
REGION                          SYSIBM    VARCHAR                     15     0 Yes
SALES                           SYSIBM    INTEGER                      4     0 Yes

  4 record(s) selected.

日付データ、文字列、文字列、数値という構造であることが分かります。

テーブルの中身を確認する

やっとタイトルにもあるテーブルの中身ですが以下にて行数を確認でき

$ db2 "select count(*) from sales"
1
-----------
         41
  1 record(s) selected.

以下にて全件を表示することができます。

$ db2 "select * from sales"

SALES_DATE SALES_PERSON    REGION          SALES
---------- --------------- --------------- -----------
12/31/2005 LUCCHESSI       Ontario-South             1
12/31/2005 LEE             Ontario-South             3
12/31/2005 LEE             Quebec                    1
12/31/2005 LEE             Manitoba                  2
12/31/2005 GOUNOT          Quebec                    1
03/29/2006 LUCCHESSI       Ontario-South             3
03/29/2006 LUCCHESSI       Quebec                    1
03/29/2006 LEE             Ontario-South             2
03/29/1996 LEE             Ontario-North             2
03/29/2006 LEE             Quebec                    3
03/29/2006 LEE             Manitoba                  5
03/29/2006 GOUNOT          Ontario-South             3
03/29/2006 GOUNOT          Quebec                    1
03/29/2006 GOUNOT          Manitoba                  7
03/30/2006 LUCCHESSI       Ontario-South             1
03/30/2006 LUCCHESSI       Quebec                    2
03/30/2006 LUCCHESSI       Manitoba                  1
03/30/2006 LEE             Ontario-South             7
03/30/2006 LEE             Ontario-North             3
03/30/2006 LEE             Quebec                    7
03/30/2006 LEE             Manitoba                  4
03/30/2006 GOUNOT          Ontario-South             2
03/30/2006 GOUNOT          Quebec                   18
03/31/2006 GOUNOT          Manitoba                  1
03/31/2006 LUCCHESSI       Manitoba                  1
03/31/2006 LEE             Ontario-South            14
03/31/2006 LEE             Ontario-North             3
03/31/2006 LEE             Quebec                    7
03/31/2006 LEE             Manitoba                  3
03/31/2006 GOUNOT          Ontario-South             2
03/31/2006 GOUNOT          Quebec                    1
04/01/2006 LUCCHESSI       Ontario-South             3
04/01/2006 LUCCHESSI       Manitoba                  1
04/01/2006 LEE             Ontario-South             8
04/01/2006 LEE             Ontario-North             -
04/01/2006 LEE             Quebec                    8
04/01/2006 LEE             Manitoba                  9
04/01/2006 GOUNOT          Ontario-South             3
04/01/2006 GOUNOT          Ontario-North             1
04/01/2006 GOUNOT          Quebec                    3
04/01/2006 GOUNOT          Manitoba                  7

  41 record(s) selected.

ダブルクオーテーションが無ければアスタリスクの展開にて以下エラーとなりますので注意ください。

$ db2 select * from sales
SQL0104N An unexpected token "database" was found following "naconda-post.log
bin". Expected tokens may include: "FROM". SQLSTATE=42601

終わりに

上記の流れが分かれば、あとはSQLを駆使すれば確認したいデータベースから自由に情報を引き出すことが可能になります。

以上、ご参考になれば幸いです。