tigtools

SQL फ़ॉर्मैटर

क्वेरी चिपकाएँ, अपने डेटाबेस का डाइलेक्ट चुनें और साफ़-सुथरा, एकसमान इंडेंटेशन वाला SQL पाएँ। कुछ भी सर्वर पर नहीं भेजा जाता।

आपके ब्राउज़र में चलता है साइन अप की ज़रूरत नहीं

इंडेंटेशन

इस्तेमाल करने का तरीका

  1. एक या अधिक SQL स्टेटमेंट चिपकाएँ, या “Try an example” दबाएँ।
  2. अपने डेटाबेस का डाइलेक्ट चुनें, ताकि उसके कीवर्ड, उद्धरण चिह्न और ऑपरेटर पहचाने जा सकें।
  3. कीवर्ड का केस और इंडेंटेशन सेट करें। टाइप करते ही फ़ॉर्मैट की गई क्वेरी दाईं ओर दिखाई देगी।
  4. एक लाइन वाला वर्शन पाने के लिए Minify दबाएँ, फिर नतीजे को कॉपी करें या .sql फ़ाइल के रूप में डाउनलोड करें।

यह कैसे काम करता है

फ़ॉर्मैटिंग के लिए ओपन-सोर्स sql-formatter लाइब्रेरी का इस्तेमाल किया जाता है। यह आपके चुने हुए डाइलेक्ट के नियमों के अनुसार क्वेरी को टोकन में बाँटती है, हर मुख्य क्लॉज़ (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY…) को अलग पंक्ति में रखती है, कॉलम सूचियों और शर्तों में इंडेंटेशन जोड़ती है और कीवर्ड का केस लागू करती है। यह व्हाइटस्पेस और, आपके कहने पर, कीवर्ड के अक्षरों का केस बदलती है; पहचानकर्ता, स्ट्रिंग लिटरल और टिप्पणियाँ जस की तस रहती हैं। सही डाइलेक्ट चुनना ज़रूरी है: उदाहरण के लिए, MySQL में नामों को उद्धृत करने के लिए बैकटिक, SQL Server में वर्गाकार ब्रैकेट और PostgreSQL में फ़ंक्शन बॉडी की शुरुआत के लिए $$ इस्तेमाल होता है।

यह फ़ॉर्मैटर लेआउट व्यवस्थित करने का टूल है, डेटाबेस नहीं। यह जाँच नहीं करता कि टेबल या कॉलम मौजूद हैं या नहीं, और पूरे ग्रामर को सत्यापित नहीं करता। इसलिए कुछ अमान्य SQL भी बिना किसी शिकायत के फ़ॉर्मैट हो सकता है। जब यह इनपुट को समझ नहीं पाता—जैसे कि कोई कोष्ठक बंद न हो—तो यह उस लाइन और कॉलम की जानकारी देता है जहाँ यह रुका।

Minify अलग तरीके से काम करता है: यह हर टोकन को बनाए रखता है और केवल लगातार आने वाले व्हाइटस्पेस को एक स्पेस में बदलता है और टिप्पणियाँ हटाता है (/*+ INDEX(t) */ जैसे ऑप्टिमाइज़र हिंट और MySQL की /*! … */ टिप्पणियाँ रखी जाती हैं, क्योंकि वे व्यवहार बदलती हैं)। स्ट्रिंग, उद्धृत पहचानकर्ता और डॉलर-कोटेड बॉडी जस की तस कॉपी होती हैं। अगर कोई कोट या टिप्पणी कभी बंद नहीं होती, तो Minify अनुमान लगाने के बजाय त्रुटि दिखाकर रुक जाता है।

उदाहरण

लॉग से क्वेरी पढ़ना

धीमी क्वेरी के लॉग में एक 400-अक्षर वाली लाइन दिखती है। MySQL डाइलेक्ट और बड़े अक्षरों वाले कीवर्ड चुनने पर यह पढ़ने लायक ब्लॉक बन जाती है, जहाँ हर JOIN और WHERE शर्त अलग पंक्ति में होती है। इससे छूटा हुआ इंडेक्स आसानी से नज़र आ जाता है।

कोड समीक्षा के लिए एकसमान शैली

एक टीम कमिट करने से पहले हर migration को PostgreSQL डाइलेक्ट, छोटे अक्षरों वाले कीवर्ड और 4-स्पेस इंडेंटेशन के साथ फ़ॉर्मैट करती है, ताकि diffs में सिर्फ़ असली बदलाव दिखें।

कोड में SQL जोड़ना

Minify टिप्पणियों वाली, कई पंक्तियों की रिपोर्ट क्वेरी को एक लाइन में बदल देता है, जैसे SELECT id, name FROM users WHERE active = 1 ORDER BY name, जिसे स्क्रिप्ट में स्ट्रिंग के रूप में चिपकाया जा सकता है।

अक्सर पूछे जाने वाले सवाल

कौन-कौन से डेटाबेस समर्थित हैं?

Standard SQL, MySQL, MariaDB, PostgreSQL, SQLite, SQL Server (T-SQL), Oracle PL/SQL, BigQuery, Snowflake, Redshift, Spark SQL, Hive, Trino/Presto, DuckDB, IBM Db2, SingleStoreDB, TiDB और Couchbase N1QL।

क्या फ़ॉर्मैटिंग से मेरी क्वेरी का काम बदल जाएगा?

ऐसा नहीं होना चाहिए: सिर्फ़ व्हाइटस्पेस और, अगर चुना गया हो, तो कीवर्ड का केस बदलता है। SQL में कीवर्ड का केस मायने नहीं रखता। फिर भी, प्रोडक्शन डेटा पर चलाने से पहले जनरेट किए गए आउटपुट की समीक्षा करें, खासकर अगर डाइलेक्ट में असामान्य सुविधाएँ हों।

“could not be formatted” संदेश क्यों आया?

टोकनाइज़र को ऐसा हिस्सा मिला जिसे वह सही जगह नहीं रख सका। अक्सर इसकी वजह कोई बंद न हुआ ब्रैकेट या कोट, या किसी दूसरे डाइलेक्ट का सिंटैक्स होता है। संदेश में दी गई लाइन और कॉलम जाँचें और सुनिश्चित करें कि चुना हुआ डाइलेक्ट आपके डेटाबेस से मेल खाता है।

क्या यह मेरे SQL को सत्यापित करता है?

नहीं। यह किसी डेटाबेस से जुड़ा नहीं है और इसे आपके स्कीमा की जानकारी नहीं है। क्वेरी फ़ॉर्मैट होने के बाद भी चलाने पर विफल हो सकती है।

गोपनीयता

आपका SQL JavaScript की मदद से आपके ब्राउज़र में फ़ॉर्मैट होता है। इसे अपलोड या सेव नहीं किया जाता, न ही एनालिटिक्स में शामिल किया जाता है। यह टूल कभी किसी डेटाबेस से कनेक्ट नहीं होता।