Konwerter SQL na XML
Wklej SQL. Odbierz czysty XML — wiersze, kolumny, NULL-e, daty i cała reszta.
Co robi to narzędzie
Jeśli zdarzyło ci się zrzucić kupę wierszy z bazy do pliku XML dla partnera, jakiegoś legacy endpointa SOAP albo starego joba ETL, który nadal oczekuje XML-a, znasz tę zabawę — otwierasz klienta SQL, odpalasz SELECT, eksportujesz, ręcznie poprawiasz wynik, walczysz z formatami dat. Zamiast tego wklej tutaj swój SQL, a dostaniesz poprawny składniowo XML za jednym przebiegiem. Wielowierszowe instrukcje INSERT, sam CREATE TABLE ze schematem albo mieszanka — wynik ten sam.
Konwerter czyta SQL tak, jak zrobiłaby to baza. Każdy wiersz wielowierszowego INSERTa staje się jednym elementem, a każda kolumna elementem potomnym z nazwą kolumny. Wartości NULL stają się pustymi elementami (dzięki temu kształt każdego wiersza jest taki sam). Literały datowe — '2024-01-15 10:30:00', DATE '2024-01-15' albo surowe timestampy — wychodzą jako ciągi ISO-8601, więc parsery w Javie, .NET, Pythonie czy gdziekolwiek indziej odczytają je bez problemu. Typy numeryczne trzymają precyzję; booleany wychodzą jako true/false.
Nazwy kwalifikowane schematem jak public.orders czy dbo.Orders są w nazwie elementu skracane do samego orders lub Orders, bo nazwy elementów XML nie mogą zawierać kropek. Identyfikatory w cudzysłowach, backticki z MySQL-a i nazwy w podwójnych cudzysłowach z PostgreSQL-a są traktowane tak samo. Wrzuć CREATE TABLE, a dostaniesz szkielet XML-a dla tego schematu — jeden pusty element na kolumnę, przydatny do rozkręcenia XSD albo przykładowego payloadu. Kilka tabel w jednym zapytaniu? Każda ląduje w wyjściu jako osobna sekcja, po kolei.
Jak z tego korzystać
Trzy kroki. Działa tak samo, czy wkleisz jeden wiersz czy tysiąc.
Wklej swój SQL (albo spróbuj przykład)
Wrzuć SQL jak stoi w lewy edytor. Instrukcje INSERT z jednym lub wieloma wierszami, definicje CREATE TABLE albo mieszanka — wszystko gra. Kliknij Wczytaj przykład, jeśli chcesz zobaczyć, jak wygląda realistyczny dump zamówień z wieloma tabelami.
Komentarze (-- i /* ... */), prefiksy schematów, cytowanie specyficzne dla dialektu (backticki MySQL-a, podwójne cudzysłowy SQLite'a, nawiasy kwadratowe SQL Servera) i końcowe średniki — wszystko przechodzi bez problemu. Nie musisz nic czyścić.
Naciśnij Konwertuj
Kliknij zielony przycisk Konwertuj. Narzędzie parsuje SQL, rozwija każdy wiersz wielowierszowego inserta, normalizuje daty i booleany i składa XML za jednym zamachem. Podczas pracy pojawia się krótki wskaźnik ładowania.
Skopiuj XML
Prawy panel wypełnia się wciętym, poprawnym składniowo XML-em, który zaakceptuje dowolny zgodny ze standardem parser XML. Skopiuj to prosto do body SOAP, fixture'a testowego, folderu drop dla ETL czy gdziekolwiek tego potrzebujesz.
Kiedy to się naprawdę przydaje
Fixture'y seed dla bazy
Masz stertę <code>INSERT</code>-ów ze skryptu seed i potrzebujesz tych samych danych jako XML do testu integracyjnego albo mock serwera. Wklejasz inserty, zabierasz XML, gotowe — bez edycji wiersz po wierszu.
SOAP i integracja z legacy
Starszy system partnera oczekuje body XML odzwierciedlającego zestaw wierszy z bazy. Pomiń kod pośredniczący, który serializuje wiersze po jednym; wklej INSERT bezpośrednio i skopiuj XML do zapytania SOAP.
Eksporty audytowe i compliance
Regulatorzy i audytorzy nadal kochają XML. Zamień wiersze, które dopiero co INSERT-owałeś (albo te wyciągnięte z zapytania na logach) w podpisywalny, archiwalny dokument XML bez stawiania pipeline'u eksportu.
Pipeline'y ETL oparte na XML
Karmisz narzędzie ETL typu SSIS, Informatica albo własnoręczny pipeline XSLT? Skonwertuj przykładowy SQL ze źródła do XML, żeby sprototypować transformację, zanim prawdziwy job wsadowy zostanie podpięty.
Najczęstsze pytania
Jak obsługuje wielowierszowe INSERT-y?
Wielowierszowy INSERT INTO orders (...) VALUES (...), (...), (...); staje się jednym elementem kontenerowym dla tabeli, z jednym elementem potomnym na wiersz — każdy potomny bierze formę liczby pojedynczej nazwy tabeli (więc wiersze z orders stają się elementami <order> wewnątrz wrappera <orders>). Każdy wiersz ma te same potomne kolumn w tej samej kolejności co lista kolumn, żeby wyjście było przewidywalne nawet przy setkach wierszy.
Co się dzieje z wartościami NULL?
NULL na liście wartości staje się pustym elementem (np. <middle_name/>) zamiast być pominięty. Dzięki temu kształt każdego wiersza jest identyczny, co ma znaczenie dla odbiorców iterujących kolumny pozycyjnie albo generujących XSD z próbki. Jeśli potrzebujesz zamiast tego xsi:nil="true", owiń wyjście malutkim XSLT albo przetwórz post-factum — konwerter trzyma się zwykłych pustych elementów dla przenośności.
Czy daty i timestampy wychodzą w ISO-8601?
Tak. Literały SQL jak '2024-01-15 10:30:00', DATE '2024-01-15', TIMESTAMP '2024-01-15 10:30:00+00' i MySQL-owy '2024-01-15T10:30:00' wychodzą jako ciągi ISO-8601 (2024-01-15T10:30:00Z, gdy jest strefa, albo po prostu 2024-01-15T10:30:00, gdy jej nie ma). To format, który stos XML w każdym liczącym się języku parsuje bez problemów.
Mogę wkleić tylko CREATE TABLE — bez wierszy?
Tak. Sam CREATE TABLE produkuje szkielet XML: jeden pusty element na kolumnę, w kolejności, w jakiej kolumny zostały zadeklarowane. Dobry punkt wyjścia dla przykładowego payloadu, szkicu XSD albo fixture'a testowego, który uzupełniasz ręcznie. Typy danych w CREATE TABLE są czytane jako wskazówki (daty zostają datami, numeryczne zostają numeryczne), ale puste elementy w wyjściu nie niosą informacji o typie.
Co, jeśli moje zapytanie zawiera kilka tabel?
Każda instrukcja INSERT czy CREATE TABLE produkuje w wyjściu własną sekcję najwyższego poziomu, w kolejności, w jakiej je zapisałeś. Mieszany skrypt, który tworzy orders, wstawia trzy zamówienia, a potem wstawia sześć order_items, staje się dokumentem z trzema sekcjami tabel, każda opakowana w element kontenerowy. Parser nie próbuje ich joinować ani wiązać — po prostu zachowuje strukturę, którą wkleiłeś.
Czy usuwa prefiksy schematów jak public.orders albo dbo.Orders?
Tak. Nazwy elementów XML nie mogą zawierać kropek, więc public.orders staje się <orders>, dbo.Orders staje się <Orders>, a my_schema."User Table" staje się <User_Table> (spacje zamieniają się w podkreślenia, bo nazwy XML nie mogą też zawierać spacji). Backticki MySQL-a, podwójne cudzysłowy PostgreSQL-a i nawiasy kwadratowe SQL Servera są usuwane w ten sam sposób.
Inne narzędzia, które mogą ci się przydać
SQL na XML to tylko jeden element układanki. Te pasują do niego: