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

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

Расставьте отступы по уровню вложенности, приведите ключевые слова к одному регистру или ужмите запрос в одну строку для логов — поддерживается пятнадцать диалектов.

Перетащите файлы сюда

.sql, .txt · до 10 МБ

Как форматировать SQL

  1. 1

    Перетащите файл .sql

    Добавьте файл с запросом. Он читается и перезаписывается прямо в этой вкладке браузера, ничего никуда не отправляется.

  2. 2

    Выберите диалект и стиль регистра

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

  3. 3

    Скачайте отформатированный запрос

    Сохраните результат как файл .sql с именем, составленным по имени исходника.

Токены, а не регулярные выражения

Перед выводом запрос разбивается на строковые литералы, идентификаторы в кавычках, комментарии, числа и слова. В этом разница между форматтером и хитрой заменой по шаблону. Литерал '-- not a comment' остается как есть и не превращается в обрезанную строку, а три пробела внутри 'a b' так и остаются тремя пробелами, потому что внутри литерала каждый символ — это данные, по которым база будет сравнивать.

Он раскладывает запросы, а не проверяет их

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

Минификация под конфиги и логи

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

Ваш запрос остается на вашем компьютере

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

Частые вопросы

Какие диалекты SQL поддерживаются?

Пятнадцать: стандартный SQL, MySQL, MariaDB, PostgreSQL, DB2, PL/SQL, N1QL, Redshift, Spark, SQLite, T-SQL, BigQuery, Snowflake, Trino и SingleStoreDB. От выбранного диалекта зависит, какие слова считаются ключевыми и где ставятся переносы строк.

Покажет ли инструмент, что в запросе есть ошибка?

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

Что значит предупреждение о несбалансированных скобках?

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

Чем минификация отличается от форматирования?

Форматирование раскладывает оператор на строки с отступами по уровню вложенности, чтобы его было удобно читать и разбирать. Минификация делает противоположное — схлопывает все в одну строку, чтобы запрос поместился в конфиг, строку лога или строковую константу.

Сохраняются ли комментарии?

По умолчанию да, и однострочные с двумя дефисами, и блочные. Они переезжают на подходящее место в новой разметке. Можно включить отдельный переключатель, который их удаляет, и он тоже работает по токенам, поэтому литерал, который только выглядит как комментарий, остается нетронутым.

Можно ли отформатировать несколько операторов сразу?

Да. Операторы, разделенные точкой с запятой, форматируются по очереди, а вы задаете, сколько пустых строк будет между ними — от нуля до пяти. Количество найденных операторов выводится вместе с результатом.

Почему запрос с глубокой вложенностью был отклонен?

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

Есть ли ограничение по размеру и что-нибудь загружается?

До пяти миллионов символов на запрос — это намного больше любого запроса, написанного от руки. Ничего не загружается ни при каком размере: все работает локально в вашем браузере, без сервера и без аккаунта.

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

Найти и заменитьЗаменяйте слова, фразы или совпадения по регулярным выражениям — до двадцати правил за один проход, с поиском целых слов для любого алфавита.Сравнить текстДве колонки, удаления красным, добавления зеленым. Измененные слова подсвечены внутри каждой строки.Форматер JSONРасставьте отступы, минифицируйте или только проверьте JSON-файл. Ошибки укажем по строке и столбцу, скрытые проблемы назовем прямо.Счетчик словСимволы, слова, предложения, абзацы и время чтения обновляются прямо во время набора — с лимитами для поста, SMS и метаописания перед глазами.Форматер XMLСделайте XML читабельным с отступами, сожмите его в одну строку или только проверьте — комментарии, CDATA и порядок атрибутов сохранятся как есть.YAML и JSONОдин инструмент для обоих направлений: формат определяется по файлу, поддерживается многодокументный YAML, а каждая ошибка указывает строку.