การจัดรูปแบบรหัส SQL โดยอัตโนมัติ


15

มีมาตรฐานและรูปแบบการเข้ารหัสทั่วไปที่รู้จักกันดีสำหรับ SQL (เช่นการใช้อักษรตัวพิมพ์ใหญ่ที่สงวนไว้การวางคำหลักในบรรทัดที่แตกต่างกันเป็นต้น)

Emacs มาพร้อมกับโหมดใด ๆ สำหรับสิ่งนี้หรือมีแพ็กเกจสำหรับการจัดรูปแบบ SQL เพื่อให้เป็นไปตามมาตรฐานทั่วไปหรือไม่?


คำตอบ:


7

Emacs ไม่ได้มาอะไรที่มีประโยชน์สำหรับการเยื้องของ sql

สิ่งที่ดีที่สุดคือsql-indent.el

ซึ่งไม่ได้ทำการเยื้องอัตโนมัติเฉพาะในการเยื้องคำสั่ง

ฉันพบว่ามันมีประโยชน์ทีเดียว


3

หากคุณไม่สนใจที่จะเรียกใช้กระบวนการไพ ธ อนการทำงานนี้ ( 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)ซึ่งทำการเยื้องอัตโนมัติและล็อคแบบอักษร ไม่มีผ้าสำลีในตัว แต่ช่วยให้คุณกำหนด linter ภายนอกด้วยตัวแปรที่ปรับแต่งได้sql-linter-program( M-x customize-group SQL)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.