Перейти к содержимому

Форматирование SQL-запросов

Приведите SQL в читаемый вид или сожмите его для MySQL, PostgreSQL, SQL Server, SQLite, BigQuery, Oracle и ещё 14 диалектов. Стиль выбираете сами, всё работает прямо в браузере.

Отформатировано
Нажмите «Форматировать SQL», чтобы привести запрос в порядок.
Работает в браузере · без загрузки на серверКак это работает

Как пользоваться: Форматирование SQL

  1. 1

    Вставьте SQL

    Вставьте запрос или целый скрипт либо откройте файл .sql; кнопка «Пример» покажет неаккуратный запрос для пробы.

  2. 2

    Выберите диалект

    Укажите свою СУБД в поле «Диалект SQL», чтобы её кавычки, операторы и ключевые слова распознавались правильно.

  3. 3

    Настройте стиль

    Выберите регистр ключевых слов, отступы, положение запятых и структуру по правилам вашей команды.

  4. 4

    Отформатируйте и скопируйте

    Нажмите «Форматировать SQL» или «Сжать», затем скопируйте результат с подсветкой или скачайте его как .sql.

Лимиты и Pro

Бесплатно и без регистрации: 20 диалектов, файлы .sql до 10 MB и скрипты, которые форматируются не дольше 20 секунд; результат длиннее 600 000 символов показывается частично, но копируется и скачивается полностью.

Pro убирает рекламу; сам форматировщик одинаков на всех тарифах. Смотреть Pro

О инструменте «Форматирование SQL»

Вставьте однострочный запрос из лога, отладочного вывода ORM или сообщения коллеги в чате, и форматировщик разложит его так, как это сделал бы аккуратный человек: каждое предложение запроса на своей строке, выбираемые столбцы и JOIN с отступом под своим ключевым словом, а подзапросы вложены так, что структура видна с первого взгляда. Поддерживаются 20 диалектов SQL: стандартный SQL, MySQL, MariaDB, PostgreSQL, SQL Server T-SQL, SQLite, Oracle PL/SQL, BigQuery, Snowflake, Redshift, Spark, Trino, DuckDB, ClickHouse, Hive, Db2, Db2 for i, SingleStore, TiDB и Couchbase N1QL. Поэтому синтаксис конкретного диалекта — идентификаторы в обратных кавычках или квадратных скобках, приведение типов через :: или строки в долларовых кавычках — остаётся нетронутым.

Стиль выбираете вы: ключевые слова прописными, строчными или как написаны; имена функций и типы данных — так же; отступ в два или четыре пробела либо табуляция; запятые в конце или в начале строк; AND и OR до или после переноса строки; стандартная или табличная структура, при которой ключевые слова выстраиваются в столбец. Скрипты из нескольких инструкций разделяются пустой строкой. Сжатие делает обратное: удаляет комментарии и лишние пробелы, не трогая строки, имена в кавычках и подсказки оптимизатору.

Результат выводится с подсветкой синтаксиса, его можно скопировать или скачать в виде файла .sql. Форматирование выполняет библиотека с открытым исходным кодом sql-formatter: она загружается при первом нажатии кнопки форматирования и работает в фоновом потоке, поэтому длинные скрипты не подвешивают страницу.

Форматировщик меняет только пробелы и регистр букв. Он не проверяет имена таблиц и столбцов, не выполняет запрос и не переписывает его ради производительности, а для хранимых процедур с необычным синтаксисом СУБД может понадобиться ближайший подходящий диалект.

Конфиденциальность

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

Возможности

20 диалектов SQL

MySQL, PostgreSQL, SQL Server, Oracle, BigQuery, Snowflake и ещё 14.

Ваш стиль

Регистр ключевых слов, отступы, запятые в начале или в конце строки, положение AND/OR и табличная структура.

И сжатие тоже

Удаляет комментарии и пробелы, чтобы встроить SQL в код, не трогая строки и подсказки оптимизатору.

Форматирование SQL: частые вопросы

Меняет ли форматирование то, что делает запрос?
Нет. Меняются только пробелы, переносы строк и регистр ключевых слов, функций и типов данных; идентификаторы, строковые литералы и комментарии остаются в точности как были. Менять регистр ключевых слов безопасно, потому что SQL к нему не чувствителен. Если в других инструментах вы переводите идентификаторы в нижний или верхний регистр, учтите, что PostgreSQL различает регистр имён в кавычках, поэтому этот форматировщик их не трогает.
Почему появляется ошибка разбора?
Форматировщику нужно распознать структуру инструкции, поэтому незакрытая скобка, пропущенное ключевое слово или синтаксис другой СУБД его останавливают. В сообщении указаны строка, столбец и то, что ожидалось в этом месте. Выберите диалект вашей базы данных: для идентификаторов в квадратных скобках нужен SQL Server, для обратных кавычек — MySQL, MariaDB или BigQuery. Также проверьте, нет ли в конце незавершённых инструкций.
Где ставить запятые — в начале или в конце строки?
Запятые в конце строки — самый распространённый стиль, и большинство инструментов выдают именно его. Запятые в начале строки позволяют легко закомментировать последний столбец, а при добавлении столбца изменение в diff занимает одну строку, поэтому некоторые команды аналитиков предпочитают их. Выбирайте вариант, принятый в вашей команде; параметр действует только для стандартной структуры.
Можно ли форматировать хранимые процедуры и скрипты из многих инструкций?
Да. Вставьте скрипт целиком, и каждая инструкция будет отформатирована и отделена пустой строкой, включая CREATE TABLE, INSERT, UPDATE, MERGE и распространённые процедурные блоки. Процедурный код конкретной СУБД, например сложные пакеты T-SQL с разделителями GO или пакеты PL/SQL, может распознаваться не полностью; выберите подходящий диалект и форматируйте блоки поменьше, если какой-то фрагмент не обрабатывается.
Что удаляет сжатие?
Сжатие удаляет комментарии -- и /* */ (а в MySQL и MariaDB ещё и комментарии #), заменяет подряд идущие пробелы и переносы строк одним пробелом и убирает пробелы рядом с запятыми и скобками. Строковые литералы, идентификаторы в кавычках и подсказки оптимизатору вида /*+ … */ или /*! … */ в MySQL сохраняются, поэтому сжатый запрос выполняется точно так же, как исходный.