Formatuj, wcinaj i porządkuj JSON.
Konwerter dialektów SQL
Tłumacz SQL między MySQL, PostgreSQL, T-SQL, Oracle i 12 innymi dialektami.
Działa na naszym serwerzeDane wejściowe są wysyłane na nasz serwer, tam przetwarzane i automatycznie usuwane w ciągu godziny.Jak przetwarzamy dane wejściowe?
Szczegóły
O tym narzędziu
Przepisuje zapytanie z jednego dialektu SQL na inny, spośród szesnastu. Rozkłada polecenie na drzewo składniowe i wypisuje je z powrotem w dialekcie docelowym, więc wynik jest przepisaniem, a nie zamianą tekstu.
Obsługiwane różnice to dokładnie te, które czynią migrację żmudną. TOP z T-SQL staje się LIMIT albo FETCH FIRST, zależnie od celu. NVL z Oracle'a zamienia się w COALESCE, podobnie IFNULL z MySQL-a. Odwrócone apostrofy stają się cudzysłowami albo nawiasami kwadratowymi. Arytmetyka dat jest przebudowywana od zera: DATE_ADD, DATEADD, INTERVAL i zwykłe dodanie liczby, które przyjmuje Oracle, to cztery zapisy jednego pomysłu i żaden z nich nie przeżyje skopiowania.
Prawdziwym ryzykiem jest pomylenie się po cichu i dlatego silnikiem jest parser, a nie zestaw wyrażeń regularnych. Wzorzec zamieniający TOP 10 na LIMIT 10 zepsuje też kolumnę nazwaną TOP i nie ma pojęcia, że sklejanie napisów to || w PostgreSQL, + w T-SQL i CONCAT w MySQL. Drzewo składniowe wie, czym jest każdy element, więc potrafi zostawić w spokoju to, co zmieniać się nie powinno.
Traktuj wynik jak pierwszą wersję roboczą. Struktura, funkcje i cytowanie tłumaczą się pewnie; czego żadne przepisywanie nie przeskoczy, to wskazówki producenta, bloki proceduralne oraz subtelniejsze różnice w kolejności wartości NULL, w sortowaniu znaków i w dzieleniu całkowitym. Przeczytaj, zanim uruchomisz na czymkolwiek istotnym - a gdy zapytanie się nie parsuje, usługa próbuje pozostałych dialektów i podaje te, które je przyjmują, bo przyczyną jest prawie zawsze wybrany dialekt źródłowy, a nie zepsuty SQL.
To jedyne narzędzie tutaj, które wysyła Twoje dane na serwer, i mówi o tym na stronie. Transpilerem, który robi to poprawnie, jest SQLGlot, a on jest w Pythonie: kompilacja do WebAssembly to 21 MB do pobrania, więcej niż cała reszta tej strony, a port do JavaScriptu nadal błędnie tłumaczy zwyczajne zapytania. Nic nie jest przechowywane - zapytanie zostaje sparsowane, wypisane i zapomniane.
Wypróbuj też
Powiązane narzędzia
- Działa w przeglądarceProgramistyczne
-
Sprawdź poprawność składni XML i znajdź dokładne miejsce błędu.
Działa w przeglądarceProgramistyczne -
Koduj tekst do Base64 i dekoduj go z powrotem.
Działa w przeglądarceProgramistyczne
Warto wiedzieć
Najczęstsze pytania
- Dlaczego akurat to narzędzie wysyła zapytanie na serwer?
- Bo transpiler, który robi to poprawnie, jest w Pythonie. Kompilacja do WebAssembly to 21 MB do pobrania - więcej niż cała reszta tej strony - a port do JavaScriptu nadal błędnie tłumaczy zwyczajne zapytania. Wysłanie tekstu to uczciwy kompromis, więc to narzędzie jest oznaczone jako wysyłające dane, a nie jako działające na Twoim urządzeniu. Nic nie jest przechowywane: zapytanie zostaje sparsowane, wypisane i zapomniane.
- Czy wynik nadaje się do uruchomienia?
- Traktuj go jak pierwszą wersję roboczą. Struktura, funkcje i cytowanie tłumaczą się pewnie, ale dialekty różnią się w sposób, którego żadne przepisywanie nie przeskoczy - wskazówki producenta, bloki proceduralne, subtelne różnice w kolejności wartości NULL, w sortowaniu znaków i w dzieleniu całkowitym. Przeczytaj, zanim uruchomisz to na czymś, co ma znaczenie.
- Pisze, że nie da się sparsować mojego SQL-a, a wygląda dobrze.
- Wtedy prawie na pewno zły jest dialekt źródłowy. Odwrócone apostrofy to dla PostgreSQL błąd składni, TOP nic nie znaczy dla MySQL-a, a jedno i drugie kończy się niepowodzeniem parsowania na pierwszym niepasującym znaku. Usługa próbuje pozostałych dialektów i podaje te, które Twoje zapytanie przyjmują, więc komunikat zwykle mówi, na co przełączyć.
- Czemu nie wystarczy zamiana tekstu?
- Bo wzorzec nie odróżni kodu od nazwy. Reguła zamieniająca TOP 10 na LIMIT 10 zepsuje też kolumnę nazwaną TOP, a żaden wzorzec nie wie, że sklejanie napisów to || w PostgreSQL, + w T-SQL i CONCAT w MySQL. Rozłożenie na drzewo składniowe sprawia, że narzędzie wie, czym jest każdy element, i zostawia w spokoju to, czego ruszać nie należy.
- Czy przerobi cały zrzut schematu?
- Do pewnej granicy: 200 zapytań albo około 100 kB na przebieg. Powyżej tego narzędzie blokowałoby współdzielony serwer zadaniem, które lepiej wykonać SQLGlotem na własnym komputerze - jest otwartoźródłowy i to ten sam silnik.