Formatage automatique du code SQL

15

Il existe des normes et des styles de codage généraux bien connus pour SQL (par exemple, la mise en majuscule des mots réservés, le placement des mots clés principaux sur différentes lignes, etc.).

Emacs est-il fourni avec des modes pour cela, ou existe-t-il des packages de formatage SQL pour le faire adhérer aux normes communes?

Amelio Vazquez-Reina
la source

Réponses:

3

Si cela ne vous dérange pas d'appeler un processus python, alors cela fonctionne ( 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))
ded7
la source
1

Pas une réponse complète à votre question, mais pour mettre en majuscule les mots réservés, j'ai quelques définitions abrégées. Voici un court exemple juste pour vous montrer (n'incluant pas tous les mots sql réservés)

(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" )
))
Nsukami _
la source
0

À partir de la version 21.4a, Emacs est fourni avec sql-mode(sql.el) qui effectue l'indentation automatique et le verrouillage des polices. Pas de peluchage intégré, mais il vous permet de définir un linter externe avec la variable personnalisable sql-linter-program( M-x customize-group SQL)

dcorking
la source