Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

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

$
0
0

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

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

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

前提

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

vimrcの設定

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

.vimrc
letg: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スクリプト書きたい。

参考サイト


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>