VS CodeでDb2 Connect Extensionを使ってみる

`「Db2 on Cloudを使ってみる」シリーズ`

Db2 Connect for Visual Studio CodeはVS Code上でDb2に接続してSQL実行などのDB操作ができるExtensionです。もちろんDb2 on Cloudでも使用可能です。

<del>ただ最近気がついたのですが、日本語が全く表示できません。[Issueあげました](https://github.com/ibmdb/vscode-extension/issues/32)。
とりあえずデータが英数字系の場合のみ今はお使いください。</del>
2022/03/08追記: v2.3.0で確認したところ使用できるようになっていました!

Extentsionの説明には以下のように書かれています:

  - IBMデータベース・サーバーへの接続。
  - 各接続のツリービューで、すべてのデータベースオブジェクトを表示。
  - 接続プロファイルの作成と管理。
  - DDL および DML 操作を行う SQL文を記述し、 .sql、.spsql、.udfsql、.db2、.spdb2、.udfdb2 として保存。
  - SQLステートメントを実行し、結果をシンプルなグリッドで表示。
  - SQLファイルを実行。
  - 結果セットを JSON、CSV、XML 形式でエクスポート。
  - 単一または複数のSQL実行およびファイル実行のためのキーボードショートカット、エディタ・オプション。
  - テーブル、ビュー、エイリアス、ストアドプロシージャ、関数、トリガー、インデックスを作成するためのテンプレート。
  - 構文の強調表示。
  - コードスニペットのサポート。
  - Db2 Connect ExplorerからDb2 for iおよびDb2 for z/OSのライセンスのインストール。

当記事はDb2 Connect Extensionの導入と使い方を説明します。
尚、英語のでの使い方ガイドは[こちら](https://community.ibm.com/community/user/hybriddatamanagement/blogs/sai-ram-akhil-ravuri1/2020/11/11/vs-code-extension-for-db2-connect)にあります(こっちの方が詳しく書いてあります)。

(2022/03/08更新)

# 0: 前提
前提は Visual Studio Codeが導入済みであることです。
未導入の方は[こちら](https://web.archive.org/web/20200103010938/https://code.visualstudio.com/Download)からダウンロードして導入してください。

# 1: Db2Connect Extensionの導入
特に他のExtensionの導入方法と違いはありません。
サイドバーから`Extensions`のアイコンをクリックして、検索フィールドに`Db2Connect`と入力しします。
`Db2 Connect`が検索フィールドの下に表示されますので、クリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/f8f369d1-fd4a-8da5-96d1-ea2fc2caff03.png)

クリックすると右側に**Db2 Connect**の説明が表示されますので、`Install`をクリックして導入します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/a83e019d-763b-3e00-a474-9380825a9b12.png)

# 2. 使い方
早速つかってみましょう!

## 2.1 DB2 CONNECTメニューを出す
まずはサイドバーに出現したミツバチアイコンをクリックします。ちなみにこのミツバチマークは[IBMのBee](https://www.ibm.com/design/language/ibm-logos/rebus/)なのです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/56593fe0-0be5-138c-003a-013ef31ee16c.png)

DB2 CONNECTメニューが表示されます。

Db2　Extensionの説明は必要なければ[X]をクリックして閉じで問題ありません。

## 2.2 Connection Profileの作成
Connection Profileの作成は必須ではありませんが、毎回入力するのも面倒なので、あらかじめ作成しておきます。

左から2番目の人の形(?)の丸のアイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/b8fb6acd-9dde-194b-01b9-3fa842f13b67.png)

`Create Connection Profile`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/d627fbfe-ba77-5de4-80ca-b22804a52f34.png)


するとDB接続方法を入力する画面が表示されます。

Db2接続情報を入力します。見えてない部分は上にスクロールして表示させてください。
(Db2 on Cloudの接続情報の取得方法は[こちら](https://qiita.com/nishikyon/items/69fee851849e7ef7e163))

  - Profile Name: DB接続を識別できる任意の名前
  - Database: データペース名
  - Hostname: ホスト名
  - Port: ボート番号
  - Userid: ユーザーID
  - Password: パスワード
  - Enable SSL Security: SSL接続の場合はチェックを入れる
  - Enter Full Path Of SSL Server Certificate: 必要な場合はSSLサーバーのCertificateのFull Pathを記入(Db2 on Cloud + MacではブランクでもでOKでした）

（2021/07/13: SSL接続のオプション設定ができたようです）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/e417d3b7-b185-95e0-5d28-c87644b06f8b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/a7012f05-5185-1d85-91c5-14023fb8e7fa.png)

入力が完了したら 「Save　& Close」をクリックしてConnection Profileを保存します。
複数接続先を登録したい場合は、同じ手順を繰り返してください。

## 2.3 DBへの接続
DB2 CONNECTメニュー、左から1番目の「+」のアイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/d7dcc838-c9f3-e2b2-14eb-d1ababc38bef.png)

`Option 3`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/3203c417-9994-c41b-bd43-531c6ae5121c.png)

ちなみに、`Option 1`は接続パラメーターを一行で入力欄に記入する方式、`Option 2`は接続パラメーターを記入するフォームが表示されるのでそこに入力する方式となります。

作成したConnection Profileの名前が表示されますので、接続したいConnection Profileをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/c8b28ac8-484a-c6b3-d8ee-3c7b98ea847f.png)

接続が成功すると右下に「Successfully connected to database」と表示され、左側にConnection Profile名が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/370eb63d-3977-215e-dff0-8013cbf3c0e4.png)

#### 接続がうまくいかない場合:　
接続設定を確認し修正しましょう。
左から2番目の人の形(?)の丸のアイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/b8fb6acd-9dde-194b-01b9-3fa842f13b67.png)

`Edit Existing Database Connection Profile`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/39088536-d4c9-fee2-c827-fe8f13990330.png)

`Select Profile`のドロップダウンをクリックして修正したい接続を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/30c1d091-05c3-5c65-c413-d6e34e98e72e.png)

表示された接続設定を確認し、間違っていた場合は修正し、「Save & Close」をクリックして保存します。




##　2.4 ツリービューでの操作
左側のConnection Profile名の先頭の`>`をクリックすると、接続先のDB名が表示され、さらにDB名の先頭の`>`をクリックすると、DB内のスキーマが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/fbeceaa6-b3aa-0a2c-ec8c-01e83d3fcff7.png)

スキーマの先頭の`>`をクリックすると、スキーマ内のテーブルやビューなどデータベースオブジェクトの種類か表示されます。さらに`>`をクリックしていくことで、その詳細の内容、テーブルであればテーブル名や列名などを表示させていくことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/1819820b-c320-7028-4f2f-ee824235eab0.png)

また各オブジェクトを選択した時、右側に表示される「＋」アイコンはクリックでそのオブジェクトの作成、「ゴミ箱」アイコンはクリックでそのオブジェクトの削除が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/3b6d28ea-ef1f-e1f8-10da-f32f180de534.png)

### テーブル操作
ここでツリービューでのテーブル操作を説明します。
テーブル名を右クリックすると、メニューがでてきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/06d46a5d-86b8-6c2b-4d92-c98766417d8d.png)

 - **Describe Table**
 
表示に使用したSQLとテーブル定義が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/5442caec-6f46-4c52-1068-9cb70d5644c7.png)


- **Select Top 1000**

表示に使用したSQLと最初の1000行が表示されます。
表示に使用したSQLと![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/e3b0d57e-b79b-1c1b-79db-ded58ea841ec.png)

表示されたSQLの結果は右上のエクスポート(?)アイコンをクリックすると、ファイルのフォーマットが表示されるので、好きなフォーマットをクリックすると、そのフォーマットのデータの新規のタブが開きます。保存したい場合はこれをで保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/bbc8b959-3fa5-6d98-3603-44864c25bd1f.png)

CSVを選択した例：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/ab29acc0-508b-0457-6fcc-356499bba112.png)

- **Select Top N**
こちらは最初のN行を表示できるSQLが表示されますので、Nの部分に表示したい行数を入れれば、指定した行数が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/3e0ec517-93fc-8fd8-3cf2-c0f6cfc588ca.png)

あとは**Select Top 1000**と同じです。

## 2.5 SQLの実行
sqlを記入したファイルは、DB2 CONNECTメニュー、左から3番目のSQL(?)のアイコンをクリックし、ファイルを指定すると実行できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/7b74e1af-c594-0d41-bff4-efedc36e170c.png)

またVS Code上で記入したSQLも実行できます。
New File(Ctrl+n)で新しくファイルを開きます。
右下の`Plan Text`をクリックするとファイルタイプが指定できます。db2で検索して、使用するdb2のタイプを選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/785dce16-92f1-a727-13a8-8074befa86c0.png)

SQLを入力します。ここでは3行入力しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/5da1d41e-8a7b-3203-dacc-c0d8ced3092c.png)


入力したSQLを全部実行する場合は、エディタ画面で右クリックすると「Excute Current SQL File」というメニューが表示されますので、それをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/ba902e3b-ca5b-6515-a101-9b989341e07e.png)

デリミター(行区切り)を聞くメッセージが表示されるので、デフォルトの`;`を使用していれば、そのまま`Enter`キーを押します。別の文字を使用している場合は、入力して`Enter`キーを押します。実行を止める場合は`Esc`キーを押してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/41d0e4c1-2a12-c8d0-8ea5-f00bc009f1a0.png)

しばらく待つと別タブで結果が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/2b86d03d-b2bd-4387-71fc-54ab7b1b8dbf.png)

入力したSQL一行または複数行を選択して実行したい場合は、実行したいSQL行を選択後、右クリックします。選択したSQLが（複数行に渡っても）1つのステートメントの場合は「Exceute Single SQL」、複数行の場合は「Exceute Multipul SQL」を選択して実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/61e8e070-1be5-c5e4-7fed-97e2199db18f.png)

「Exceute Multipul SQL」の場合は、デリミター(行区切り)を聞くメッセージが表示されるので、デフォルトの`;`を使用していれば、そのまま`Enter`キーを押します。別の文字を使用している場合は、入力して`Enter`キーを押します。実行を止める場合は`Esc`キーを押してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/c3b682fe-4193-2fc4-e908-6dce15c67400.png)

しばらく待つと別タブで結果が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/b7c92073-bbdb-c6b7-d81b-839b6bfe2091.png)

表示されたSQLの結果は右上のエクスポート(?)アイコンをクリックすると、ファイルのフォーマットが表示されるので、好きなフォーマットをクリックすると、そのフォーマットのデータの新規のタブが開きます。保存したい場合はこれをで保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/b39d11a6-39d8-bb06-8e01-f5169a38c62d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/4dd2a0fc-1a9c-febd-7bc8-5ae0a3740f98.png)

## 2.6 DB接続の切断
作業が終了したら DB接続を切断します。
右側に表示されているコネクションプロファイル名の右の「X」をクリックして切断します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/4414aca6-39e1-5622-51be-f50ff14a4015.png)

「Connection to Database terminated」とメッセージが表示されれば切断は完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294516/ddce3dec-a8f0-db3d-5a07-cc0f8ff9c160.png)

以上です。
その他にもいろいろ機能があるようなので、もっと知りたい方は[VS Code extension for Db2 Connect](
https://community.ibm.com/community/user/hybriddatamanagement/blogs/sai-ram-akhil-ravuri1/2020/11/11/vs-code-extension-for-db2-connect)(英語)で確認してみてください。