LoginSignup
6
7

More than 5 years have passed since last update.

quickrun.vimでOracleにSQL実行→CSV表示

Last updated at Posted at 2015-12-13

quickrun.vimを使って、OracleにSQL実行、見やすくCSVで結果表示する設定をまとめました。

Oracleの場合、単純にquickrunを使ってSQLファイルを実行すると、出力形式が酷く非常に見難くなってしまいます。これを回避するため、CSV形式に出力するテンプレートを定義しています。

また、接続対象のDBは切替できるように、接続文字列をquickrunの設定とは別に設定するようにしています。

前提

  • quickrun.vimのインストールが終わっていること。NeoBundleなど、お好きなもので。
  • Oracle(およびsqlplus)のインストールが終わっていること。簡易接続ネーミングが使える10g以降の想定で記載していますが、他のバージョンでも応用はできると思います。

vimrcの設定

SQLファイルに対するquickrunプラグインの設定を.vimrcに記述します。

.vimrc
let g:quickrun_config['sql'] = {
\ 'exec': '%c %o \@%s',
\ 'command': 'sqlplus',
\ 'cmdopt': '-S %{get(g:, "quickrun_oracle_conn", "/nolog")}',
\ 'hook/output_encode/encoding': 'sjis',
\ 'hook/eval/enable': 1,
\ 'hook/eval/template':
\   'set echo off' . "\r" .
\   'set linesize 1000' . "\r" .
\   'set trimspool on' . "\r" .
\   'set feedback off' . "\r" .
\   'set colsep ","' . "\r" .
\   'set heading on' . "\r" .
\   'set underline off' . "\r" .
\   '%s',
\}

以下で設定値を解説します。

  • 'exec': '%c %o \@%s'
    • sqlplus -S DB接続文字列 @SQLファイルの形式で実行する雛形を定義しています。
    • @はquickrunに展開されてしまうので、\でエスケープしています。
  • 'command': 'sqlplus'
    • 雛形の%csqlplusが代入されます。
  • 'cmdopt': '-S %{get(g:, "quickrun_oracle_conn", "/nolog")}'
    • 雛形の%oに代入されるコマンドオプションです。
    • -Sはメッセージおよびプロンプト・初期メッセージを抑制する、sqlplusのオプションです。
    • %{から}の部分がg:quickrun_oracle_conn 変数(後述)からDBの接続文字列を読み込む設定です。
    • g:quickrun_oracle_conn 変数は後で定義する想定なので、%{}を使って実行時に評価します。
    • g:quickrun_oracle_conn 変数が定義されていない場合は/nologオプションを指定してログインなしで実行します。
  • 'hook/output_encode/encoding': 'sjis'
    • アウトプットのエンコーディング設定です。ここではWindows想定でsjisを設定しています。自分の環境に合わせてください。
  • 'hook/eval/enable': 1
  • 'hook/eval/template': (省略)
    • CSV出力するための実行テンプレートをhookスクリプトで設定します。
    • これによりSQLファイルの前にset echo offなどのCSV形式で出力する設定が差し込まれます。

DB接続文字列の設定

対象のDBを接続する変数を設定します。

let g:quickrun_oracle_conn = 'user/pass\@server/servicename'

上記をコマンドモードなどで実行して変数設定します。
@はエスケープします。
私はlocalrc.vimを使って、フォルダごとに設定できる形にしています。
.vimrcに書いてもいいですが、対象のDBを変更するために.vimrcの再読み込みが必要になります。

QuickRun実行

SQLファイルを開いて、:QuickRunで実行結果が表示されます。
SQLファイルは;の区切り文字が必要です。

todo

  • Alignta使って、CSVをより綺麗に整形するhookスクリプト書きたい。

参考サイト

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