tigtools

Форматувальник SQL

Вставте запит, виберіть діалект бази даних і отримайте акуратний SQL із послідовними відступами. Дані не надсилаються на сервер.

Працює у вашому браузері Без реєстрації

Відступ

Як користуватися

  1. Вставте один або кілька SQL-запитів або натисніть «Спробувати приклад».
  2. Виберіть діалект вашої бази даних, щоб інструмент розпізнавав її ключові слова, лапки й оператори.
  3. Налаштуйте регістр ключових слів і відступи. Відформатований запит з’являтиметься праворуч під час введення.
  4. Натисніть «Мініфікувати», щоб отримати однорядкову версію, а потім скопіюйте результат або завантажте його як файл .sql.

Як це працює

Форматування виконується за допомогою бібліотеки sql-formatter з відкритим кодом. Вона розбиває запит на токени за правилами вибраного діалекту, розміщує кожну основну частину (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY…) в окремому рядку, додає відступи до списків стовпців і умов та змінює регістр ключових слів. Змінюються пробіли й, якщо ви виберете відповідну опцію, регістр ключових слів; ідентифікатори, рядкові літерали та коментарі залишаються без змін. Важливо вибрати правильний діалект: наприклад, у MySQL назви беруть у зворотні апострофи, у SQL Server — у квадратні дужки, а в PostgreSQL $$ позначає тіло функції.

Форматувальник змінює вигляд запиту, але не є системою керування базами даних. Він не перевіряє, чи існують таблиці або стовпці, і не перевіряє повний синтаксис, тому деякі некоректні запити форматуються без попереджень. Якщо інструмент не може розібрати введений текст, наприклад через незакриту дужку, він повідомить рядок і стовпець, на яких зупинився.

Мініфікація працює інакше: зберігаються всі токени, послідовності пробілів замінюються одним пробілом, а коментарі видаляються (підказки оптимізатора, як-от /*+ INDEX(t) */, і коментарі MySQL /*! … */ зберігаються, оскільки вони впливають на поведінку). Рядки, ідентифікатори в лапках і тіла в доларових лапках копіюються без змін. Якщо лапки або коментар не закриті, мініфікація зупиниться з помилкою, а не намагатиметься вгадати.

Приклади

Як читати запит із журналу

У журналі повільних запитів є один рядок завдовжки 400 символів. Після форматування з діалектом MySQL і ключовими словами у верхньому регістрі запит перетворюється на зручний для читання блок, де кожен JOIN і кожна умова WHERE розміщені в окремому рядку. Так легше помітити відсутній індекс.

Єдиний стиль для перевірки коду

Перед комітом команда форматує кожну міграцію з діалектом PostgreSQL, ключовими словами в нижньому регістрі та відступом у 4 пробіли. Тож у відмінностях видно лише реальні зміни.

Вставлення SQL у код

Мініфікація перетворює багаторядковий запит звіту з коментарями на один рядок, наприклад 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 не має значення. Однак перевірте результат перед виконанням на робочих даних, особливо якщо використовуєте незвичні можливості діалекту.

Чому з’явилося повідомлення «не вдалося відформатувати»?

Токенізатор натрапив на фрагмент, який не зміг розпізнати. Часто це незакрита дужка чи лапки або синтаксис іншого діалекту. Перевірте рядок і стовпець у повідомленні та переконайтеся, що вибрано діалект вашої бази даних.

Чи перевіряє інструмент мій SQL?

Ні. Інструмент не підключений до бази даних і не знає її схему. Запит може форматуватися, але не виконуватися.

Конфіденційність

SQL форматується у вашому браузері за допомогою JavaScript. Дані не завантажуються на сервер, не зберігаються й не передаються в аналітику. Інструмент ніколи не підключається до бази даних.