tigtools

Μορφοποιητής SQL

Επικολλήστε ένα ερώτημα, επιλέξτε τη διάλεκτο της βάσης δεδομένων σας και αποκτήστε καθαρή SQL με σταθερή εσοχή. Δεν αποστέλλεται τίποτα σε διακομιστή.

Εκτελείται στον περιηγητή σας Χωρίς εγγραφή

Εσοχή

Πώς να το χρησιμοποιήσετε

  1. Επικολλήστε μία ή περισσότερες εντολές SQL ή πατήστε «Δοκιμή παραδείγματος».
  2. Επιλέξτε τη διάλεκτο της βάσης δεδομένων σας ώστε να αναγνωρίζονται οι λέξεις-κλειδιά, τα εισαγωγικά και οι τελεστές της.
  3. Ορίστε τη χρήση κεφαλαίων/πεζών για τις λέξεις-κλειδιά και την εσοχή. Το μορφοποιημένο ερώτημα εμφανίζεται δεξιά καθώς πληκτρολογείτε.
  4. Πατήστε Minify για έκδοση σε μία γραμμή, αντιγράψτε το αποτέλεσμα ή κατεβάστε το ως αρχείο .sql.

Πώς λειτουργεί

Η μορφοποίηση χρησιμοποιεί τη βιβλιοθήκη ανοιχτού κώδικα sql-formatter. Χωρίζει το ερώτημα σε διακριτικά χρησιμοποιώντας τους κανόνες της διαλέκτου που επιλέγετε, βάζει κάθε βασική πρόταση (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY…) σε δική της γραμμή, δημιουργεί εσοχές στις λίστες στηλών και στις συνθήκες και εφαρμόζει την επιλογή σας για πεζά/κεφαλαία στις λέξεις-κλειδιά. Αλλάζει τα κενά και, αν το ζητήσετε, τα πεζά/κεφαλαία των λέξεων-κλειδιών· τα αναγνωριστικά, τα αλφαριθμητικά και τα σχόλια διατηρούνται. Η επιλογή της σωστής διαλέκτου έχει σημασία: για παράδειγμα, τα backticks δηλώνουν ονόματα στη MySQL, οι τετράγωνες αγκύλες στον SQL Server και το $$ ξεκινά ένα σώμα συνάρτησης στην PostgreSQL.

Ο μορφοποιητής είναι εργαλείο διάταξης, όχι βάση δεδομένων. Δεν ελέγχει αν υπάρχουν οι πίνακες ή οι στήλες και δεν επικυρώνει πλήρως τη γραμματική, επομένως κάποια μη έγκυρη SQL μορφοποιείται χωρίς προειδοποίηση. Όταν δεν μπορεί να κατανοήσει την είσοδο, για παράδειγμα μια παρένθεση που δεν κλείνει, αναφέρει τη γραμμή και τη στήλη όπου σταμάτησε.

Το Minify λειτουργεί διαφορετικά: διατηρεί κάθε διακριτικό και απλώς συμπτύσσει κάθε ακολουθία κενών σε ένα μόνο κενό και αφαιρεί τα σχόλια (οι υποδείξεις βελτιστοποίησης όπως /*+ INDEX(t) */ και τα σχόλια MySQL /*! … */ διατηρούνται, επειδή αλλάζουν τη συμπεριφορά). Τα αλφαριθμητικά, τα αναγνωριστικά σε εισαγωγικά και τα σώματα με εισαγωγικά δολαρίου αντιγράφονται αμετάβλητα. Αν ένα εισαγωγικό ή ένα σχόλιο δεν κλείσει ποτέ, το Minify σταματά με σφάλμα αντί να κάνει εικασίες.

Παραδείγματα

Ανάγνωση ερωτήματος από αρχείο καταγραφής

Ένα αρχείο καταγραφής αργών ερωτημάτων εμφανίζει μία γραμμή 400 χαρακτήρων. Με τη διάλεκτο MySQL και κεφαλαίες λέξεις-κλειδιά, γίνεται ένα ευανάγνωστο μπλοκ όπου κάθε συνθήκη JOIN και WHERE βρίσκεται σε δική της γραμμή, κάνοντας εύκολο να εντοπιστεί το ελλείπον ευρετήριο.

Συνεπές στυλ για code review

Μια ομάδα μορφοποιεί κάθε migration με διάλεκτο PostgreSQL, πεζές λέξεις-κλειδιά και εσοχή 4 κενών πριν από το commit, ώστε τα diffs να δείχνουν μόνο πραγματικές αλλαγές.

Ενσωμάτωση SQL σε κώδικα

Η επιλογή Minify μετατρέπει ένα σχολιασμένο, πολυγραμμικό ερώτημα αναφοράς σε μία γραμμή, όπως SELECT id, name FROM users WHERE active = 1 ORDER BY name, έτοιμο για επικόλληση σε string μέσα σε script.

Συχνές ερωτήσεις

Ποιες βάσεις δεδομένων υποστηρίζονται;

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»;

Ο tokenizer συνάντησε κάτι που δεν μπορούσε να τοποθετήσει, συχνά μια αγκύλη ή ένα εισαγωγικό που δεν έκλεισε ή σύνταξη από διαφορετική διάλεκτο. Ελέγξτε τη γραμμή και τη στήλη στο μήνυμα και βεβαιωθείτε ότι η επιλεγμένη διάλεκτος αντιστοιχεί στη βάση δεδομένων σας.

Επικυρώνει την SQL μου;

Όχι. Δεν είναι συνδεδεμένο σε βάση δεδομένων και δεν γνωρίζει το σχήμα σας. Ένα ερώτημα μπορεί να μορφοποιηθεί και παρόλα αυτά να αποτύχει κατά την εκτέλεσή του.

Απόρρητο

Η SQL σας μορφοποιείται στο πρόγραμμα περιήγησής σας με JavaScript. Δεν μεταφορτώνεται, δεν αποθηκεύεται ούτε περιλαμβάνεται στα στατιστικά στοιχεία και το εργαλείο δεν συνδέεται ποτέ σε βάση δεδομένων.