write ahead log

ロールフォワード用

dbext.vimの使い方

vimからDBアクセスできるという素晴らしいプラグイン.

導入

面倒なのでVundle使う. この辺は個人のお好みで.

以下をvimrcに記述.

Plugin 'vim-scripts/dbext.vim'

設定

プロファイル(接続情報)を書く必要がある.

MySQLの場合

当然だけど, MySQLクライアントが導入されている必要がある.

以下の設定の場合.

項目
プロファイル名 mysqlnodb
ホストIP 127.0.0.1
ユーザ名 root
パスワード password
DB名 test

.vimrcにこんな感じで書く.

let g:dbext_default_profile_mysqlnodb = 'type=MYSQL:host=127.0.0.1:user=root:passwd=password:dbname=test'

Oracleの場合

項目
プロファイル名 myORA
ホスト 127.0.0.1
ユーザ scott
パスワード tiger
let g:dbext_default_profile_myORA = 'type=ORA:srvname=127.0.0.1:user=scott:passwd=tiger'

PostgreSQLの場合

ちょっと試した限りではPostgreSQLが一番癖があった.

項目
プロファイル名 myORA
ホスト 127.0.0.1
ユーザ test_user
DB名 test_db
パスワード test_password
ポート 5432
let g:dbext_default_profile_postgres = 'type=PGSQL:host=127.0.0.1:user=test_user:dbname=test_db:passwd=test_password:port=5432'

記述自体はこれだけなんだけど, 実行すると下記の様に怒られる.

dbext:PostgreSQL requires a '$HOME/.pgpass' file in order to authenticate. This file is missing. If you are using a local connection, you can create an empty .pgpass file.  The b
inary 'psql' does not accept commandline passwords.

.pgpassを作ると怒られずに済んだ.

$ touch ~/.pgpass

あとロケール設定していないと怒られた.

SQLiteの場合

以下の設定の場合.

項目
プロファイル名 sampleSQLite
DBファイルパス ~/test.db
let g:dbext_default_profile_sampleSQLite = 'type=SQLITE:dbname=~/test.db'

プロファイルの外部ファイル化

プロファイルは.vimrcとは別管理したい.

そこで.vimrcに外部ファイルがあれば読み込む様に記述して, ~/.dbext_profileという名前のファイルに上記のプロファイル設定はまとめて書く事にした.

" プロファイルを記述したファイルがあれば読み込む
if filereadable(expand('~/.dbext_profile'))
    source ~/.dbext_profile
endif

履歴ファイル名を変える

履歴機能は便利なんだけど, ホームが汚れるのが嫌なのでファイル名を変えた.

let  g:dbext_default_history_file = '~/.dbext_history'

使い方

これだけあれば仕事にも使えそう.

Normalモード

コマンド 機能
slt テーブルの一覧を取得
sdt カーソル下のテーブル名のテーブル定義を取得
sdta 指定テーブル名のテーブル定義を取得
se カーソル下のSQLを実行
sbp 接続プロファイルの切替
sh Historyを表示
st カーソル上のテーブルをSelect

Insertモード

補完が便利っぽい.

*.sqlファイルを開いていない時には以下の様にfile typeを指定してやる必要がある.

:set ft=sql
コマンド 機能
<C-c>t テーブル名を補完
<C-c>v ビュー名を補完
<C-c>c カラム名を補完
<C-c>a シンタックスを補完
<C-c>L テーブル補完中に押すとカラムを全て出力

何気に辞書登録されているので

<C-x> + <C-k>

が使える.便利.