Indsæt SQL til venstre og klik på "Konverter" — så laver vi det om til XMLIndsæt SQL

Hvad værktøjet gør

Har du nogensinde skullet dumpe en bunke databaserækker til en XML-fil for en leverandør, et legacy SOAP-endpoint eller et gammelt ETL-job, der stadig forventer XML, så kender du rutinen — åbn et query-værktøj, kør SELECT, eksportér, justér output manuelt, slås med datoformater. Indsæt din SQL her i stedet og få velformet XML tilbage i én omgang. Flerrækkers INSERT-sætninger, kun skema-CREATE TABLE, eller en blanding — samme resultat.

Konverteren læser SQL, som en database ville gøre. Hver række i et flerrækkers INSERT bliver til ét element, og hver kolonne bliver til et barnelement opkaldt efter kolonnen. NULL-værdier bliver til tomme elementer (så formen på hver række forbliver den samme). Datolignende literaler — '2024-01-15 10:30:00', DATE '2024-01-15' eller rå timestamps — udskrives som ISO-8601-strenge, så parsere i Java, .NET, Python eller hvor som helst ellers læser dem ind igen uden bøvl. Numeriske typer bevarer deres præcision; booleans kommer ud som true/false.

Skemakvalificerede navne som public.orders eller dbo.Orders bliver i elementnavnet skåret ned til blot orders eller Orders, fordi XML-elementnavne ikke må indeholde punktummer. Citerede identifiers, backticks fra MySQL og dobbeltcitat-navne fra PostgreSQL håndteres på samme måde. Smid et CREATE TABLE ind og du får et XML-skelet for det skema — ét tomt element pr. kolonne, brugbart som startpunkt for en XSD eller en sample-payload. Flere tabeller i samme forespørgsel? Hver lander i outputtet som sin egen sektion, i rækkefølge.

Sådan bruger du det

Tre trin. Virker ens, uanset om du indsætter én række eller tusind.

1

Indsæt din SQL (eller prøv eksemplet)

Smid SQL’en som den er ind i editoren til venstre. INSERT-sætninger med én eller mange rækker, CREATE TABLE-definitioner eller en blanding — alt er fint. Klik på Indlæs eksempel, hvis du vil se, hvordan en realistisk multi-tabel ordre-dump ser ud.

Kommentarer (-- og /* ... */), skemapræfikser, dialektspecifikke citations (MySQL-backticks, SQLite-dobbeltcitat, SQL Server-kantede parenteser) og afsluttende semikolon fungerer alle uden problemer — du behøver ikke rydde op i noget på forhånd.

2

Tryk på Konverter

Klik på den grønne Konverter-knap. Værktøjet parser SQL’en, udfolder hver række i et flerrækkers insert, normaliserer datoer og booleans og bygger XML’en i én omgang. Mens den kører vises en kort loading-indikator.

3

Kopiér XML’en

Højre panel fyldes med indrykket, velformet XML, som enhver standardkonform XML-parser vil acceptere. Kopiér det direkte ind i en SOAP-body, en testfixture, en ETL drop-mappe eller hvor du nu har brug for det.

Hvornår det faktisk er brugbart

Seed-fixtures til databasen

Du har en bunke <code>INSERT</code>s fra et seed-script og skal bruge de samme data som XML til en integrationstest eller en mock-server. Indsæt inserts, tag XML’en med dig, færdig — ingen manuel redigering række for række.

SOAP og legacy enterprise-integration

Et ældre partnersystem forventer en XML-body, der spejler et sæt databaserækker. Spring mellemlagskoden over, der stringifier rækker én for én; indsæt INSERT’en direkte og kopiér XML’en ind i din SOAP-request.

Audit- og compliance-eksporter

Regulatorer og revisorer elsker stadig XML. Lav de rækker, du lige har INSERT’et (eller dem du fangede fra en log-forespørgsel) om til et signerbart, arkiverbart XML-dokument uden at rejse en eksportpipeline.

XML-baserede ETL-pipelines

Fodrer du et ETL-værktøj som SSIS, Informatica eller en hjemmegjort XSLT-pipeline? Konvertér SQL-prøven opstrøms til XML for at prototype transformationen, inden det rigtige batch-job er koblet på.

Typiske spørgsmål

Hvordan håndteres flerrækkers INSERT-sætninger?

Et flerrækkers INSERT INTO orders (...) VALUES (...), (...), (...); bliver til ét containerelement for tabellen, med ét barnelement pr. række — hvert barn opkaldt efter tabellens ental-form (så rækker fra orders bliver <order>-elementer inde i en <orders>-wrapper). Hver række har de samme kolonnebørn, i samme rækkefølge som kolonnelisten, så outputtet forbliver forudsigeligt selv med hundredvis af rækker.

Hvad sker der med NULL-værdier?

Et NULL i værdilisten bliver til et tomt element (fx <middle_name/>) i stedet for at blive droppet. Det holder formen på hver række identisk, hvilket betyder noget for downstream-forbrugere, der iterer kolonner positionelt eller bygger en XSD ud fra prøven. Hvis du i stedet har brug for xsi:nil="true", så pak outputtet ind i en lille XSLT eller efterbehandl det — konverteren holder sig til almindelige tomme elementer af hensyn til portabiliteten.

Kommer datoer og timestamps ud som ISO-8601?

Ja. SQL-literaler som '2024-01-15 10:30:00', DATE '2024-01-15', TIMESTAMP '2024-01-15 10:30:00+00' og MySQL-varianten '2024-01-15T10:30:00' kommer alle ud som ISO-8601-strenge (2024-01-15T10:30:00Z, når der er en tidszone, ellers bare 2024-01-15T10:30:00). Det er formatet, som XML-stacken i ethvert større sprog parser uden vrøvl.

Kan jeg indsætte bare et CREATE TABLE — uden rækker?

Ja. Et CREATE TABLE med kun skema giver et XML-skelet: ét element pr. kolonne, tomt, i den rækkefølge kolonnerne blev deklareret. Et godt udgangspunkt for en sample-payload, et XSD-udkast eller en testfixture, du udfylder manuelt. Datatyperne i CREATE TABLE læses som hints (datoer forbliver datoer, numeriske forbliver numeriske), men de tomme elementer bærer ingen typeinfo i outputtet.

Hvad hvis min forespørgsel indeholder flere tabeller?

Hver INSERT- eller CREATE TABLE-sætning producerer sin egen top-sektion i outputtet, i den rækkefølge du skrev dem. Et blandet script, der opretter orders, indsætter tre ordrer og derefter indsætter seks order_items, bliver til et dokument med tre tabelsektioner, hver pakket ind i et containerelement. Parseren forsøger ikke at joine eller relatere dem — den bevarer bare den struktur, du indsatte.

Fjerner den skemapræfikser som public.orders eller dbo.Orders?

Ja. XML-elementnavne må ikke indeholde punktummer, så public.orders bliver til <orders>, dbo.Orders bliver til <Orders>, og my_schema."User Table" bliver til <User_Table> (mellemrum bliver til underscores, fordi XML-navne heller ikke må indeholde mellemrum). MySQL-backticks, dobbeltcitat fra PostgreSQL og kantede parenteser fra SQL Server fjernes på samme måde.

Andre værktøjer, du kan få brug for

SQL til XML er kun ét stykke af puslespillet. Disse passer godt sammen med det: