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

आपकी क्वेरी का पूर्ण उत्तर नहीं है, लेकिन आरक्षित शब्दों को कैपिटलाइज़ करने के लिए, मेरी कुछ निश्चित परिभाषाएँ हैं। यहाँ सिर्फ आपको दिखाने के लिए एक छोटा उदाहरण है (सभी आरक्षित वर्गीय शब्दों को शामिल नहीं)

(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-program( M-x customize-group SQL) के साथ बाहरी लाइनर को परिभाषित करने की अनुमति देता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.