Memformat kode SQL secara otomatis


15

Ada beberapa standar dan gaya pengkodean umum yang terkenal untuk SQL (mis., Menggunakan huruf besar untuk kata-kata khusus, menempatkan kata kunci utama dalam baris yang berbeda, dll.).

Apakah Emacs datang dengan mode apa pun untuk ini, atau apakah ada paket untuk memformat SQL agar mematuhi standar umum?


Jawaban:



3

Jika Anda tidak keberatan memanggil proses python, maka ini berfungsi ( 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

Bukan jawaban lengkap untuk kueri Anda, tetapi untuk memanfaatkan kata-kata yang dipesan, saya memiliki beberapa definisi singkatan. Berikut ini adalah contoh singkat hanya untuk menunjukkan kepada Anda (tidak termasuk semua kata sql yang dicadangkan)

(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

Dari versi 21.4a, Emacs hadir dengan sql-mode(sql.el) yang melakukan lekukan otomatis dan kunci font. Tidak ada linting bawaan, tetapi memungkinkan Anda untuk menentukan linter eksternal dengan variabel yang dapat disesuaikan sql-linter-program( M-x customize-group SQL)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.