Перейти к содержанию

Конвертер диалектов SQL

Переписывайте SQL между синтаксисом PostgreSQL, MySQL, SQLite и SQL Server.

Входные данные
Выходные данные

Конвертер диалектов SQL

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

Исходный диалект и целевой диалект выбирают оба конца преобразования. Флажки ниже включают и выключают отдельные преобразования: нормализация кавычек идентификаторов заменяет двойные кавычки, обратные кавычки и квадратные скобки на собственный стиль целевой БД; преобразование предложения LIMIT переключается между LIMIT, TOP и OFFSET…FETCH FIRST без потери смещения; преобразование функций даты и строк переписывает NOW()/GETDATE()/datetime('now'), LENGTH()/LEN(), SUBSTRING()/SUBSTR() и COALESCE()/IFNULL()/ISNULL(); преобразование конкатенации строк переключается между || и CONCAT()/+; преобразование типов столбцов отображает SERIAL, AUTO_INCREMENT, IDENTITY(1,1), BOOLEAN, TEXT и объявления в стиле TIMESTAMP на их ближайшие эквиваленты. Сохранение комментариев контролирует, выживают ли комментарии -- и /* */ при переписывании.

Некоторые конструкции не имеют настоящих эквивалентов — PostgreSQL's RETURNING и ON CONFLICT, или MySQL's ON DUPLICATE KEY UPDATE — и вместо того, чтобы угадывать переписывание, инструмент оставляет их на месте и перечисляет в блоке предупреждений, добавленном к выводу. Инструмент переписывает текст оператора, а не парсит полный план выполнения, поэтому проверьте результат перед запуском против реальной базы данных, особенно для вложенных подзапросов или необычного форматирования. Многооператорные скрипты тоже работают: каждый оператор, разделённый точкой с запятой, преобразуется самостоятельно.

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

FAQ

Это действительно парсит SQL или просто делает замену текста?
Инструмент переписывает известные шаблоны — предложения ограничения строк, распространённые функции, конкатенацию, кавычки идентификаторов и типы столбцов — с помощью целенаправленных замен текста, а не полного парсера SQL, поэтому всегда проверяйте результат перед запуском против реальной базы данных.
Что происходит с конструкциями, которые не существуют в целевом диалекте?
Они остаются на месте и перечисляются в блоке предупреждений, добавленном к выводу, например ON CONFLICT PostgreSQL при преобразовании в SQL Server.
Можно ли преобразовать многооператорные скрипты?
Да — каждый оператор, разделённый точками с запятой, обрабатывается отдельно, поэтому скрипт с несколькими оператораами CREATE TABLE или SELECT преобразуется в один проход.
Мой SQL загружается куда-нибудь?
Нет. Преобразование полностью работает в вашем браузере — ваши запросы, схема и данные никогда не покидают ваше устройство.