3
3

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.

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

Last updated at Posted at 2018-01-06

はじめに

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

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

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

環境

OS : windows
接続DB : oracle

導入手順

Package ControlからSQLToolsをインストール

SQLToolsというプラグインを使用することで実現することが可能
http://mtxr.github.io/SQLTools/

  1. Ctrl+Shift+pでコマンドパレットを開く
  2. installと入力しPackage Control:Install Packageを選択
  3. sqltoolsと入力しSQLToolsをインストール
    image.png

【SQLToolsの設定】

SQLToolsのインストールが終わったら実行ファイルとDB接続情報の設定

【実行ファイルの設定】
  • PreferencesPackage SettingsSQLToolsSettingsと進み設定を開く

image.png
 #最初はこんな感じなのでUser設定に一式コピー(下図、左側を右側に)
image.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接続情報の設定】
  • PreferencesPackage SettingsSQLToolsConnectionsと進み設定を開く

 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

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

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

早速やってみよう!

・・・

image.png
思いっきり文字化けした( ꒪⌓꒪)
接続DBがS-JISだったので、UTF-8のSublimeとの相性が悪い。。。

いろいろ試した結果、環境変数触るといけるのではということで、、
image.png

◆1/23追記
プラグインのUpdateでオプション追加が可能になりました。
PreferencesPackage SettingsSQLToolsConnections
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

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

参考

Sublime Text 3 で SQL を実行する方法 (SQLTools)
文字化けに関するトラブルに強くなる【基礎編】

おわりに

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

  • Example

【ログ】こんなSQLを
image.png
【整形】ぱっと整形して
image.png
【分析】エラー箇所/修正箇所の特定・修正
【実行】SQLToolsでそのまま実行/挙動確認

osqleditを使わずSublimeで完結できるようになってすっきりです!
#ちなみに整形に使用しているのはuroboro​SQL Formatterです。

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

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?