SQL-форматтер и beautifier

Вставьте запутанный запрос и получите чистый SQL с аккуратными отступами. 17 диалектов, выбор регистра ключевых слов и минификация в один клик — всё в браузере.

Работает в браузереБез регистрацииНичего не загружается

Отформатированный SQL

Как пользоваться: SQL-форматтер

  1. Вставьте один или несколько SQL-запросов в поле ввода или откройте файл .sql.
  2. Выберите диалект вашей СУБД, чтобы его синтаксис — приведения ::, [brackets], обратные кавычки или строки $$ — разбирался правильно.
  3. Задайте регистр ключевых слов (ВЕРХНИЙ, нижний или как есть), отступы и число пустых строк между запросами.
  4. Переключитесь на Минифицировать, чтобы убрать комментарии и пробелы для логов, ORM или параметров URL.
  5. Скопируйте результат или скачайте его как файл .sql.

Зачем форматировать SQL?

Запросы, скопированные из логов ORM, планов выполнения или кода приложения, обычно приходят одной длинной строкой. Если вынести каждое предложение (SELECT, FROM, JOIN, WHERE, GROUP BY) на отдельную строку и сделать отступы для столбцов и условий, логика становится читаемой. Это также уменьшает диффы на код-ревью и помогает заметить пропущенное условие соединения или неуместный OR.

Соглашения о стиле SQL

  • Ключевые слова в верхнем регистре (SELECT, WHERE) отделяют синтаксис SQL от имён таблиц и столбцов. Так советует большинство руководств по стилю, хотя в dbt и командах аналитики популярен нижний регистр.
  • Один столбец на строку — тогда добавление или удаление столбца даёт дифф в одну строку.
  • Единообразные отступы (2 или 4 пробела) внутри предложений и подзапросов показывают вложенность с первого взгляда.
  • Завершители запросов: заканчивайте каждый запрос ;, чтобы скрипты из нескольких запросов были однозначными.

Поддерживаемые диалекты SQL

Standard SQL, PostgreSQL, MySQL, MariaDB, SQLite, Microsoft SQL Server (T-SQL), Oracle PL/SQL, Google BigQuery, Snowflake, Amazon Redshift, Spark SQL, Trino/Presto, Hive, IBM Db2, Couchbase N1QL, SingleStore и TiDB. Если запрос не разбирается, попробуйте более конкретный диалект: @variables, параметры $1 и специфичные для СУБД операторы распознаются только в своём диалекте.

Что делает минификатор

Режим минификации удаляет комментарии --, # и /* */, сжимает пробелы и переводы строк в одиночные пробелы и убирает пробелы вокруг запятых и скобок. Строковые литералы и идентификаторы в кавычках ('…', "…", `…`, […], $$…$$) копируются байт в байт, поэтому смысл запроса не меняется.

Часто задаваемые вопросы

Отправляется ли мой SQL на сервер?
Нет. Форматирование выполняет open-source библиотека sql-formatter прямо в браузере. Запросы с именами таблиц, данными клиентов или учётными данными остаются на вашем компьютере.
Меняет ли форматирование поведение запроса?
Нет. Меняются только пробелы, переводы строк и (по вашему выбору) регистр ключевых слов. Идентификаторы, строковые литералы и комментарии сохраняются как есть.
Почему я получаю ошибку разбора на корректном SQL?
Вероятно, запрос использует синтаксис другой СУБД. Выберите подходящий диалект, например PostgreSQL для приведений ::type или SQL Server для имён в квадратных скобках ([bracketed]) и @params.
Можно ли отформатировать несколько запросов сразу?
Да. Разделяйте запросы точкой с запятой. Можно выбрать, сколько пустых строк будет между ними в результате.
Изменит ли регистр ключевых слов имена моих столбцов?
Нет. Регистр меняется только у зарезервированных ключевых слов, типов данных и встроенных функций. Имена таблиц и столбцов сохраняют исходное написание.

Похожие инструменты