SQLコードの自動フォーマット


15

SQLには一般的なよく知られたコーディング標準とスタイルがいくつかあります(予約語の大文字使用、メインキーワードの異なる行への配置など)。

Emacsにはこのためのモードがありますか、それともSQLをフォーマットして共通の標準に準拠させるためのパッケージがありますか?


回答:



3

Pythonプロセスへの呼び出しを気にしない場合、これは動作します(pip install sqlparse):

(defun sqlparse-region (beg end)
  (interactive "r")
  (shell-command-on-region
   beg end
   "python -c 'import sys, sqlparse; print(sqlparse.format(sys.stdin.read(), reindent=True))'"
   t t))

1

クエリに対する完全な答えではありませんが、予約語を大文字にするために、略語の定義があります。以下は、すべてを示すための短い例です(予約されているすべてのSQLワードは含まれません)。

(define-abbrev-table 'sql-mode abbrev-table 
(mapcar #'(lambda (v) (list v (upcase v) nil 1))
'("absolute" "action" "add" "after" "all" "allocate" "alter" "and" "any" "are" "array" "as" "asc" "asensitive" )
))

0

バージョン21.4aから、Emacsには自動インデントとフォントロックを行うsql-mode(sql.el)が付属しています。組み込みのリンティングはありませんが、カスタマイズ可能な変数sql-linter-programM-x customize-group SQL)で外部リンターを定義できます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.