SQL文をPostgresqlに投げて実行結果を得る一連の流れをVim内で完結させる

今までSQLファイルを実行するのに直接コンソールを叩いていたけど、Vimの中からクエリーを発行して直接結果を閲覧できるようになりたいと思って調べていたら,dbext.vimというプラグインを使うと出来た。

インストール方法

他のVimプラグインのインストールと同じように ddbext_2000.zipをダウンロードして

cp -rf dbext_2000/ ~/.vim/

とするだけでインストールは完了。

設定方法

自分はPostgresqlを使っているので.vimrcに以下の様な設定を書く。

let dbext_default_dbname="db_name"
let dbext_default_profile=""
let dbext_default_type="PGSQL"
let dbext_default_user="your_name"
let dbext_default_passwd="your_password"

次に ~/.pgpass

localhost:port_number:db_name:user_name:password

と入力する。以上で設定は終了。

実行

あとは適当なsample.sqlファイルを作って、

select * from users;

みたいなクエリーを書いて

<leader>se

と入力するとその結果が下の画面みたいな感じで表示される。

terminal

このプラグイン、かなりすごいと思う。

One More Thing …

これだけでもかなり便利だけど違うDBに接続したいときは~/.vimrcと ~/.pgpassのに箇所を変更しないといけないのが面倒。そこでpython change.py db_name を実行すると,~/.vimrcと~/.pgpassのDB名を書き換えるプログラムを作った。ソースは以下。 Python3.4,Python2.7両対応になっています。

#change.py

def pat_replace(path):
    with open(path,"r+") as f:
        lines = f.readlines()
        res = ""
        for line in lines:
            if '_dbname' in line:
                line = "let dbext_default_dbname='{}'\n".format(db)
                res += line
            else:
                res += line

    with open(path,"w+") as f:
        f.write(res)



def rewrite_vimrc(db):
    home = expanduser("~")
    path = os.path.join(home,".vimrc")
    pat_replace(path)





if __name__ == "__main__":
    try:
        db = sys.argv[1]
    except:
        print("type db name please")
        pass
    else:
        rewrite_pgpass(db)
        rewrite_vimrc(db)

DBの接続先も簡単に変更できてかなり便利になった。

Related Contents

Pickup Contents