Sublime Text 3でSQLを実行したい欲求と戦った話

#はじめに
いろいろなテキストエディタがありますが、
私は会社の研修がきっかけでSublime Text(以下Sublime)を使用しています。

SQLエディタは普段OsqlEditを使用していますが、
ログに吐かれるSQLを整形⇒分析するのに使い勝手が悪いなと悶々としていました。

これはSublimeで整形から実行/挙動確認までを完結してやりたいという欲求と戦った話です。

#環境
OS : windows
接続DB : oracle

#導入手順
### Package ControlからSQLToolsをインストール
<B>SQLToolsというプラグインを使用することで実現することが可能</B>
[http://mtxr.github.io/SQLTools/](http://mtxr.github.io/SQLTools/)
1. `Ctrl`+`Shift`+`p`でコマンドパレットを開く
2. installと入力し`Package Control:Install Package`を選択
3. sqltoolsと入力し`SQLTools`をインストール
![image.png](https://qiita-image-store.s3.amazonaws.com/0/140221/f4a277bd-9769-0f32-9b6a-9bffa1b64d2c.png)

### 【SQLToolsの設定】
<B>SQLToolsのインストールが終わったら実行ファイルとDB接続情報の設定</B>

###### 【実行ファイルの設定】

* `Preferences` → `Package Settings` → `SQLTools` → `Settings`と進み設定を開く

![image.png](https://qiita-image-store.s3.amazonaws.com/0/140221/f83a0786-5fb7-e09d-a2eb-d6b356460dd3.png)
　＃最初はこんな感じなのでUser設定に一式コピー（下図、左側を右側に）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/140221/52ca52b1-9c19-a27e-e8a1-a0afa43d921c.png)

* 実行ファイルのPathを設定

　User設定にコピーした`"cli" :{}`の中を編集し実行ファイルのPATHに書き換える。
　＃今回はoracleを使用するので`"sqlplus"`の部分を`sqlplus.exe`のPATHに書き換え
　【注意】windowsのPATHは`\ (バックススラッシュ)`になるので`/`に直すかエスケープを意識しましょう

```
    "cli" : {
        "mysql"   : "mysql",
        "pgsql"   : "psql",
//        "oracle"  : "sqlplus",
        "oracle"  : "C:\\oraclexe\\app\\oracle\\product\\11.2.0\\server\\bin\\sqlplus.exe",
        "vertica" : "vsql",
        "sqsh"    : "sqsh",
        "firebird": "isql",
        "sqlite"  : "sqlite3"
    },
```
　以上で実行ファイルの設定は完了です。

###### 【DB接続情報の設定】

* `Preferences` → `Package Settings` → `SQLTools` → `Connections`と進み設定を開く

　User設定のOracle接続情報を書き換え

```
    "Connection Oracle": {
      "type"    : "oracle",
      "host"    : "127.0.0.1",
      "port"    :  1521,
      "database": "dbname",
      "username": "anotheruser",
      "password": "password",
      "service" : "servicename",
      "encoding": "utf-8"
    },
```
　＃ここで指定した値を使用してsqlplusを起動しています。
　以下、settingsに記載の引数定義

```
"args": "{username}/{password}@"(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={host})(PORT={port})))(CONNECT_DATA=(SERVICE_NAME={service})))""
```

　以上でDB接続情報の設定は完了です。

#動作確認
導入まで終わったら動作確認。

1. Sublimeを再起動して`Ctrl`+`Shift`+`p`でコマンドパレットを開く
2. st:select connectionと入力し`ST:Select Connection`を選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/140221/749ccd0f-d669-aebf-c03b-9f9612975fd4.png)

3. 登録したDBが表示されればOK。DBを選択しSublimeからsqlplusに接続完了。

以上でSublimeでSQLを触るための環境が完成です！

#早速やってみよう！

・・・


![image.png](https://qiita-image-store.s3.amazonaws.com/0/140221/7bebb249-23b6-0e4b-b88a-b2138b4bffbd.png)
<b>思いっきり文字化けした( ꒪⌓꒪)</b>
接続DBがS-JISだったので、UTF-8のSublimeとの相性が悪い。。。

いろいろ試した結果、環境変数触るといけるのではということで、、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/140221/e487899c-207f-ee00-093d-3570416169fc.png)

◆1/23追記
プラグインのUpdateでオプション追加が可能になりました。
 `Preferences` → `Package Settings` → `SQLTools` → `Connections`の
`nls_lang`の設定で文字化けを解消できます！

```
    "Connection Oracle": {
      "type"    : "oracle",
      "host"    : "127.0.0.1",
      "port"    :  1521,
      "database": "dbname",
      "username": "anotheruser",
      "password": "password",
      "service" : "servicename",
      // nls_lang is optional
      "nls_lang": "american_america.al32utf8",
      "encoding": "utf-8"
    },
```


再起動して再実行！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/140221/c83ab102-c4ca-b455-3bc9-7a879b22ba8d.png)

無事日本語表示できました(๑˃̵ᴗ˂̵)و

#参考
[Sublime Text 3 で SQL を実行する方法 (SQLTools)](http://everything-you-do-is-practice.blogspot.jp/2017/11/sublime-text-3-sql-sqltools.html)
[文字化けに関するトラブルに強くなる【基礎編】](http://www.atmarkit.co.jp/ait/articles/0901/21/news124_3.html)

#おわりに
これでログから整形→分析→実行確認まで出来るようになりました！

* Example

【ログ】こんなSQLを
![image.png](https://qiita-image-store.s3.amazonaws.com/0/140221/b603c4cb-36ce-f042-2c86-7b3dec9c1d4b.png)
【整形】ぱっと整形して
![image.png](https://qiita-image-store.s3.amazonaws.com/0/140221/75226ced-ac7d-45cd-c606-5663cd689a85.png)
【分析】エラー箇所/修正箇所の特定・修正
【実行】SQLToolsでそのまま実行/挙動確認

osqleditを使わずSublimeで完結できるようになってすっきりです！
＃ちなみに整形に使用しているのは[uroboro​SQL Formatter](https://packagecontrol.io/packages/uroboroSQL%20Formatter)です。

参考リンクで解決できる方が多いでしょうが、ところどころ戸惑ったので記事にしました。
他のデータベースでも同様に接続可能です。
Sublimeってほんとなんでもできますね( ✧Д✧) ｶｯ!!