1
0

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 1 year has passed since last update.

Db2 CLIからWatsonQueryにアクセスする

Last updated at Posted at 2022-07-01

当記事はDb2のCLI(コマンドラインインターフェース)からIBM Cloudのデータ仮想化サービスWatson Query(SaaS版)に接続する方法について説明します。
外部のBIツールなどからWatson Queryには、Db2のJDBCドライバーが使用できればでアクセスすることができますので、もちろんDb2 CLIからもアクセスできるのです!その際、useridではなくAPIKEYが必要です。

GUIでなくてCLIでアクセスしたい(昔からのDb2ユーザーの傾向!)、シェルプログラムでバッチ操作したいなどの場合にお使いください。

ここで確認した環境は以下です: 

  • Red Hat Enterprise Linux 8
  • IBM Data Server Runtime Client v11.5.7

1. APIKEY, 接続情報の準備

今回必要なのは以下の4つです。

  • APIKEY
  • host名(hostname, IP addressなど)
  • port番号
  • db名

1-1. APIKEYは以下の2つの方法、どちらかで準備してください。

1-2. 接続情報は以下の方法で準備してください。

DBeaverからWatsonQueryにアクセスする」の「1-2. 接続情報は以下のどちらかで取得してください。」に記載の方法で取得します。

2. Watson QueryのDbをカタログする

Watson QueryのDbをリモートDbとして、カタログします。

2-1. Nodeのカタログ

以下のコマンドでカタログします:<>で囲まれた部分は1で取得した自分の情報に入れ替えます

db2 catalog tcpip node <任意のNode名> remote <host名> server <port番号> security ssl

コマンド実行例:

[db2inst1@host-aaa ~]$db2 catalog tcpip node WQNODE remote 00000000-0000-0000-0000-xxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxx.databases.appdomain.cloud server 34567 security ssl
DB20000I  The CATALOG TCPIP NODE command completed successfully.
DB21056W  Directory changes may not be effective until the directory cache is
refreshed.
[db2inst1@host-aaa ~]$

2-2. DBのカタログ

以下のコマンドでカタログします:<>で囲まれた部分は1で取得した自分の情報に入れ替えます

db2 catalog db <db名> as <任意のDb別名> at node <2-1で設定した任意のNode名> AUTHENTICATION GSSPLUGIN

APIKEYでアクセスするためAUTHENTICATION GSSPLUGINを忘れずに入れます。

コマンド実行例:

[db2inst1@host-aaa ~]$ db2 catalog db bludb as WQDB at node WQNODE AUTHENTICATION GSSPLUGIN
DB20000I  The CATALOG DATABASE command completed successfully.
DB21056W  Directory changes may not be effective until the directory cache is
refreshed.
[db2inst1@host-aaa ~]$

最後に以下のコマンドでdirectory cache をリフレッシュします。

db2 terminate

コマンド実行例:

[db2inst1@host-aaa ~]$ db2 terminate
DB20000I  The TERMINATE command completed successfully.
[db2inst1@host-aaa ~]$

これで設定は完了です!

3. Watson QueryのDbに接続

APIKEYを使って、 Watson QueryのDbに接続します。
以下のコマンドでカタログします:<>で囲まれた部分は1で取得した自分の情報に入れ替えます

db2 connect to <2-2で設定した任意のDb別名> APIKEY <1で取得したAPIKEYの値>

コマンド実行例:

[db2inst1@host-aaa ~]$ db2 connect to WQDB APIKEY xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

   Database Connection Information

 Database server        = DB2/LINUXX8664 11.5.6.0
 SQL authorization ID   = DV_IAM_S...
 Local database alias   = WQDB

[db2inst1@host-aaa ~]$

3. Watson QueryのDbでSQLを実行

Db接続後、SQL実行が可能です。
仮想化したテーブル一覧はSYSCAT.NICKNAMES カタログ・ビューに入っているようです。
仮想化したテーブル一覧(スキーマ付き)を取得するSQLサンプル:

db2 "select TABSCHEMA|| '.'||TRIM(TABNAME) as SchemaTableName from SYSCAT.NICKNAMES  where TABSCHEMA <> 'DVSYS'"

 
実行例:

[db2inst1@host-aaa ~]$ db2 "select TABSCHEMA|| '.'||TRIM(TABNAME) as SchemaTableName from SYSCAT.NICKNAMES  where TABSCHEMA <> 'DVSYS'"

SCHEMATABLENAME
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NISHITO .SHAREBIKE_CHIBA

  1 record(s) selected.

[db2inst1@host-aaa ~]$

普通に仮想化したテーブルにSELECTできます。以下はSELECTの実行例です:

[db2inst1@host-aaa ~]$ db2 "select ID from NISHITO.SHAREBIKE_CHIBA fetch  first 10 rows only"

ID
--------
00301996
00302005
00302008
00302305
00302308
00302324
00302329
00302334
00302339
00302344

  10 record(s) selected.

[db2inst1@host-aaa ~]$

使用が終わったら接続を切ります。

db2 connect reset

実行例:

[db2inst1@host-aaa  ~]$ db2 connect reset
DB20000I  The SQL command completed successfully.
[db2inst1@host-aaa  ~]$

以上です。

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?