EmacsからPostgreSQLに接続

EmacsからPostgreSQLに接続したら楽だったのでメモ

Emacsを起動後、sql-postgresコマンドでサーバーに接続

M-x sql-postgres

ユーザー名・データベース名・サーバーを入力して接続。
.pgpassファイルを作っておけばパスワード入力しなくて済む。
.pgpassのパーミッションは600にしておく。

#~/.pgpass
localhost:5432:データベース:ユーザー:パスワード

別バッファで.sqlファイルをsql-modeで開く。
構文ハイライトがデフォルトでansiなので、これをsql-set-productコマンドを使ってpostgresに変える

M-x sql-set-product ⏎
postgres

そしてバッファとSQLコネクションをsql-set-sqli-bufferコマンドで関連付ける。

M-x sql-set-sqli-buffer

「*SQL*」というバッファがあるのでそれを選ぶ。
つながったら「C-c C-r」でリージョン内のクエリを実行出来る。

バッファ内ののクエリをまるごと実行するなら「C-c C-b」でOK.
 
おまけ
SQLを編集する際に自動でインデントしてくれたら楽だな、と思ったらsql-indentてのがあったので入れた。

M-x package-install ⏎
sql-indent

init.elに設定を追記

(eval-after-load "sql"
  '(load-library "sql-indent"))

あと、sql-set-productも自動でやってしまえば楽なのでその設定もinit.elに追記

(defun sql-mode-hooks()
  (sql-set-product "postgres"))
(add-hook 'sql-mode-hook 'sql-mode-hooks)