Konwersja SQL (SQL Conversion) to proces wyodrębniania danych ze skryptu SQL i reorganizacji ich w inne formaty danych, takie jak JSON, CSV, XML, YAML, HTML, Markdown itd. SQL (Structured Query Language, strukturalny język zapytań) to standardowy język zapytań dla relacyjnych baz danych, narzędzia eksportu baz danych (takie jak mysqldump, pg_dump) zazwyczaj eksportują dane w postaci instrukcji INSERT w skrypcie SQL, ten format jest wygodny do importu do bazy danych, ale niewygodny do odczytu przez programy, analizy danych lub wymiany między systemami, dlatego wymagana jest konwersja do bardziej uniwersalnych formatów.
Typowe skrypty eksportu danych SQL zawierają dwa rodzaje instrukcji: CREATE TABLE do definiowania struktury tabeli (nazwy kolumn, typy danych, ograniczenia) i INSERT INTO ... VALUES (...) do wstawiania konkretnych danych. To narzędzie parsuje oba rodzaje instrukcji, wyodrębnia definicje kolumn i informacje o typach z CREATE TABLE, faktyczne wiersze danych z INSERT, a następnie reorganizuje wyjście w formacie wybranym przez użytkownika. Cały proces parsowania wykonywany jest lokalnie w przeglądarce, nie zależy od żadnych usług backendowych.
Dlaczego konwertować SQL do innych formatów? Skrypty SQL są uniwersalne, ale niewygodne w następujących scenariuszach: po pierwsze, programom frontendowym znacznie łatwiej jest odczytywać JSON niż parsować SQL, bez konieczności wprowadzania parsera SQL; po drugie, oprogramowanie arkuszy kalkulacyjnych, takie jak Excel, Google Sheets, natywnie obsługuje CSV, a nie SQL; po trzecie, w scenariuszach plików konfiguracyjnych i dokumentacji YAML, Markdown są bardziej czytelne niż SQL; po czwarte, do wymiany danych między systemami często używa się XML lub JSON jako neutralnych formatów. Po konwersji SQL do tych uniwersalnych formatów dane mogą być bezpośrednio konsumowane przez więcej narzędzi i języków.
Parser SQL tego narzędzia jest napisany ręcznie i koncentruje się na parsowaniu instrukcji INSERT i CREATE TABLE. Dla INSERT obsługiwane są zarówno krotki jednokrotne (INSERT INTO t (a,b) VALUES (1,2)), jak i wielowartościowe (INSERT INTO t (a,b) VALUES (1,2), (3,4), (5,6)), z automatycznym mapowaniem danych na nazwy kolumn. Dla CREATE TABLE obsługiwane jest parsowanie definicji kolumn, typów danych (VARCHAR(255), INT, DECIMAL(10,2) itd. z długością w nawiasach), ograniczeń i klauzul NOT NULL, PRIMARY KEY, IF NOT EXISTS, z poprawną obsługą zagnieżdżonych nawiasów w celu uniknięcia błędnego podziału.
Rozpoznawanie typów to kluczowy aspekt konwersji SQL. Narzędzie automatycznie określa typ na podstawie formy literału wartości: wartości ujęte w pojedyncze lub podwójne cudzysłowy to ciągi znaków; NULL (bez względu na wielkość liter) to wartość pusta; TRUE/FALSE to wartości logiczne; 0x..., X'...', B'...' to literały szesnastkowe; czyste liczby (ze znakiem minus, kropką dziesiętną, notacją naukową) to liczby. To automatyczne rozpoznawanie typów gwarantuje, że skonwertowane formaty JSON, CSV itd. zachowują semantykę oryginalnych danych (np. liczba 1 nie staje się ciągiem "1"), co ułatwia poprawne przetwarzanie przez programy downstream.
Różnice w stylu cudzysłowów między dialektami baz danych to częsta pułapka przy parsowaniu SQL. MySQL domyślnie używa odwróconych apostrofów (`) do otaczania identyfikatorów (nazw tabel, kolumn), PostgreSQL używa podwójnych cudzysłowów ("), SQL Server/T-SQL używa nawiasów kwadratowych ([]), standardowy SQL również używa podwójnych cudzysłowów. Funkcja unquoteIdentifier tego narzędzia automatycznie rozpoznaje i usuwa te cudzysłowy, jednocześnie przetwarzając ucieczkę wewnątrz cudzysłowów (np. `` → `, "" → "). W trybie odtwarzania SQL instrukcje INSERT są regenerowane z odpowiednim stylem cudzysłowów dla docelowego dialektu.
Ucieczka ciągów SQL to inny kluczowy szczegół techniczny. Standard SQL definiuje ucieczkę pojedynczego cudzysłowu wewnątrz ciągu poprzez podwojenie ('It''s' oznacza It's), MySQL domyślnie obsługuje również ucieczkę ukośnikiem odwrotnym (\n, \t, \', \", \\\\, \0, \Z itd.). Parser ciągów tego narzędzia jednocześnie przetwarza oba mechanizmy ucieczki, poprawnie odtwarzając oryginalną zawartość ciągu. Podczas konwersji do CSV pola zawierające przecinki, cudzysłowy, znaki nowej linii są ponownie escaped zgodnie ze standardem RFC 4180; podczas konwersji do XML/HTML escaped są znaki specjalne takie jak &, <, >, ", '.
Czysto frontendowe przetwarzanie to kluczowa zasada projektowania tego narzędzia. Całe parsowanie SQL i konwersja danych wykonywane są w silniku JavaScript przeglądarki, bez przesyłania jakichkolwiek danych na serwer. Oznacza to, że nawet jeśli skrypt SQL zawiera wrażliwe dane użytkowników, tajemnice handlowe lub strukturę wewnętrznej bazy danych, nie wyciekną one na zewnątrz. Ten projekt jest szczególnie odpowiedni do przetwarzania eksportu produkcyjnych baz danych, bez obaw o zgodność danych. Jednocześnie przetwarzanie frontendowe nie ma opóźnień sieciowych, szybkość konwersji jest ograniczona tylko przez CPU i pamięć urządzenia.
W porównaniu z tradycyjnymi narzędziami konwersji SQL wiersza poleceń (takimi jak sql2csv, sqlparser) to narzędzie ma kilka zalet: nie wymaga instalacji i konfiguracji środowiska, otwórz stronę internetową i używaj; zapewnia wizualny interfejs do podglądu wyniku konwersji w czasie rzeczywistym; obsługuje przełączanie wielu formatów wyjścia jednym kliknięciem; wbudowane dane przykładowe i dokumentacja pomocy; responsywny design mobilny do użytku wszędzie. Jednak narzędzie koncentruje się na ekstrakcji danych i nie przetwarza złożonych różnic dialektów SQL (np. operatorów JSONB PostgreSQL, ON DUPLICATE KEY UPDATE MySQL) i zaawansowanych funkcji (procedury składowane, funkcje, wyzwalacze); w przypadku takich potrzeb zaleca się użycie natywnych narzędzi baz danych lub specjalistycznych platform ETL.
Podczas korzystania z narzędzia konwersji SQL warto zwrócić uwagę na kilka najlepszych praktyk: po pierwsze, przed konwersją sprawdź, czy skrypt SQL zawiera kompletne dane (instrukcje INSERT), a nie tylko zapytania (SELECT), które nie są parsowane; po drugie, dla skryptów SQL z wieloma tabelami zaleca się włączenie «Oddzielnego wyprowadzania wielu tabel» w celu zachowania informacji o strukturze tabel; po trzecie, podczas przetwarzania SQL zawierającego znaki chińskie, dla wyjścia CSV zaleca się włączenie «Dołącz BOM», aby zapewnić poprawne rozpoznanie kodowania przez Excel; po czwarte, podczas przetwarzania dużych SQL dump zaleca się wyłączenie «pięknego wyjścia» w celu zmniejszenia rozmiaru wyjścia; po piąte, podczas migracji między bazami danych można użyć trybu «Odtwarzanie SQL» do przełączania dialektu, ale złożone typy (np. tablice PostgreSQL, JSONB) mogą wymagać ręcznej korekty.