LoginSignup
16
16

More than 5 years have passed since last update.

EmacsでインタラクティブにSQLを使うための設定(sql.el)

Last updated at Posted at 2013-03-04

emacsにauto-install機能を用いてSQL関連のelispを導入する。

まず、emacsのauto-installコマンドを使って必要なelispをダウンロード,コンパイル、ロードを行う。

elispのインストール

M-x install-elisp
それぞれのURLを入力

sql.el: http://www.emacswiki.org/emacs/download/sql.el
sql-indent.el: http://www.emacswiki.org/emacs/download/sql-indent.el
sql-complete.el: http://www.emacswiki.org/emacs/download/sql-complete.el
sql-transform.el: http://www.emacswiki.org/emacs/download/sql-transform.el

それぞれ、C-c C-cでLoadし終わったら.emacsを編集する。

.emacsの編集

以下を.emacsに追記してください。
(default設定は適当に変えてください。)

;; C-c C-c : 'sql-send-paragraph
;; C-c C-r : 'sql-send-region
;; C-c C-s : 'sql-send-string
;; C-c C-b : 'sql-send-buffer
(require 'sql)

(add-hook 'sql-interactive-mode-hook
          #'(lambda ()
              (interactive)
              (set-buffer-process-coding-system 'sjis-unix 'sjis-unix )
              (setq show-trailing-whitespace nil)))

;; starting SQL mode loading sql-indent / sql-complete
(eval-after-load "sql"
  '(progn
     (load-library "sql-indent")
     (load-library "sql-complete")
     (load-library "sql-transform")))

(setq auto-mode-alist
      (cons '("\\.sql$" . sql-mode) auto-mode-alist))

(sql-set-product-feature
 'ms :font-lock 'sql-mode-ms-font-lock-keywords)

(defcustom sql-ms-program "sqlcmd"
  "Command to start sqlcmd by SQL Server."
  :type 'file
  :group 'SQL)

(sql-set-product-feature
 'ms :sql-program 'sql-ms-program)
(sql-set-product-feature
 'ms :sqli-prompt-regexp "^[0-9]*>")
(sql-set-product-feature
 'ms :sqli-prompt-length 5)

(defcustom sql-ms-login-params
  '(user password server database)
  "Login parameters to needed to connect to mssql."
  :type '(repeat (choice
                  (const user)
                  (const password)
                  (const server)
                  (const database)))
  :group 'SQL)

(defcustom sql-ms-options '("-U" "-P" "-S" "-d")
  "List of additional options for `sql-ms-program'."
  :type '(repeat string)
  :group 'SQL)

(defun sql-connect-ms ()
  "Connect ti SQL Server DB in a comint buffer."
  ;; Do something with `sql-user', `sql-password',
  ;; `sql-database', and `sql-server'.
  (let ((f #'(lambda (op val)
               (unless (string= "" val)
                 (setq sql-ms-options
                       (append (list op val) sql-ms-options)))))
        (params `(("-U" . ,sql-user)("-P" . ,sql-password)
                  ("-S" . ,sql-server)("-d" . ,sql-database))))
    (dolist (pair params)
      (funcall f (car pair)(cdr pair)))
    (sql-connect-1 sql-ms-program sql-ms-options)))

(sql-set-product-feature
 'ms :sqli-login 'sql-ms-login-params)
(sql-set-product-feature
 'ms :sqli-connect 'sql-connect-ms)

(defun run-mssql ()
  "Run mssql by SQL Server as an inferior process."
  (interactive)
  (sql-product-interactive 'ms))

使い方

emacs上でのコマンド
基本的に

M-x sql-xx

でそれぞれのsqlクライアントをインタラクティブに利用するモードに切り替わる。

例えばMySQLの場合はemacs上で

M-x sql-mysql

その他のSQLモードについては
http://www.sixnine.net/roadside/sqlmode.html
に載ってます。

sqlモードのhelpについては

M-x sql-help

で参照できる。

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