Перейти до вмісту

Конвертер діалектів 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 завантажується куди-небудь?
Ні. Перетворення повністю працює у вашому браузері — ваші запити, схема та дані ніколи не залишають ваш пристрій.