Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

で参照できる。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away