SQL naar XML Converter
Plak SQL. Krijg nette XML terug — rijen, kolommen, NULLs, datums, alles.
Wat deze tool doet
Als je ooit een stapel databaserijen hebt moeten dumpen naar een XML-bestand voor een leverancier, een oude SOAP-endpoint of een oude ETL-job die nog steeds XML verwacht, ken je het klusje — query-tool openen, SELECT draaien, exporteren, de output met de hand bijschaven, worstelen met datumformaten. Plak je SQL hier in plaats daarvan en je krijgt in één keer goed gevormde XML terug. Multi-row INSERT-statements, alleen een CREATE TABLE met het schema, of een mix — zelfde resultaat.
De converter leest SQL zoals een database dat zou doen. Elke rij van een multi-row INSERT wordt één element, en elke kolom wordt een kind-element met de kolomnaam. NULL-waarden worden lege elementen (zo blijft de vorm van elke rij gelijk). Datumachtige literals — '2024-01-15 10:30:00', DATE '2024-01-15' of ruwe timestamps — komen eruit als ISO-8601-strings, zodat parsers in Java, .NET, Python of waar dan ook ze zonder gedoe weer inlezen. Numerieke typen houden hun precisie; booleans komen eruit als true/false.
Schema-gekwalificeerde namen als public.orders of dbo.Orders worden in de elementnaam ingekort tot orders of Orders, omdat XML-elementnamen geen punten mogen bevatten. Identifiers tussen aanhalingstekens, backticks uit MySQL en namen tussen dubbele aanhalingstekens uit PostgreSQL worden op dezelfde manier behandeld. Gooi er een CREATE TABLE in en je krijgt een XML-skelet voor dat schema — één leeg element per kolom, handig om een XSD op te zetten of een voorbeeld-payload te bouwen. Meerdere tabellen in dezelfde query? Elke belandt in de output als eigen sectie, in volgorde.
Hoe je het gebruikt
Drie stappen. Werkt hetzelfde of je één rij plakt of duizend.
Plak je SQL (of probeer het voorbeeld)
Gooi de SQL zoals hij is in de linker-editor. INSERT-statements met één of veel rijen, CREATE TABLE-definities, of een mix — allemaal prima. Klik op Voorbeeld laden als je wilt zien hoe een realistische multi-table order-dump eruitziet.
Commentaar (-- en /* ... */), schema-prefixen, dialect-specifieke quoting (MySQL-backticks, SQLite-dubbele aanhalingstekens, SQL Server-blokhaken) en puntkomma’s aan het eind werken allemaal prima — je hoeft niets op te ruimen.
Druk op Converteren
Klik op de groene Converteren-knop. De tool parseert het SQL, klapt elke rij van een multi-row insert uit, normaliseert datums en booleans en bouwt de XML in één keer. Tijdens het uitvoeren zie je een korte laadindicator.
Kopieer de XML
Het rechterpaneel vult zich met ingesprongen, goed gevormde XML die elke standaardconforme XML-parser accepteert. Kopieer het meteen in een SOAP-body, een testfixture, een ETL-drop-map, of waar je het ook nodig hebt.
Wanneer dit echt van pas komt
Database seed-fixtures
Je hebt een stapel <code>INSERT</code>s uit een seed-script en je hebt dezelfde data als XML nodig voor een integratietest of een mock-server. Plak de inserts, neem de XML mee, klaar — geen rij-voor-rij bewerken.
SOAP en legacy enterprise-integratie
Een ouder partnersysteem verwacht een XML-body die een set databaserijen weerspiegelt. Sla de tussenlaag over die rijen één voor één serialiseert; plak de INSERT direct en kopieer de XML in je SOAP-request.
Audit- en compliance-exports
Toezichthouders en auditors zijn nog steeds dol op XML. Zet de rijen die je net hebt geINSERT (of die je uit een logquery hebt gehaald) om in een ondertekenbaar, archiveerbaar XML-document zonder een exportpipeline op te tuigen.
XML-gebaseerde ETL-pipelines
Voed je een ETL-tool als SSIS, Informatica of een zelfgebouwde XSLT-pipeline? Zet het voorbeeld-SQL uit de bron om naar XML om de transformatie te prototypen voordat de echte batch is aangesloten.
Veelgestelde vragen
Hoe gaat het om met multi-row INSERTs?
Een multi-row INSERT INTO orders (...) VALUES (...), (...), (...); wordt één container-element voor de tabel, met één kind-element per rij — elk kind krijgt de enkelvoudsvorm van de tabelnaam (dus rijen uit orders worden <order>-elementen in een <orders>-wrapper). Elke rij heeft dezelfde kolom-kinderen, in dezelfde volgorde als de kolomlijst, zodat de output voorspelbaar blijft, ook bij honderden rijen.
Wat gebeurt er met NULL-waarden?
Een NULL in de waardenlijst wordt een leeg element (bijv. <middle_name/>) in plaats van weggelaten. Zo blijft de vorm van elke rij identiek, wat uitmaakt voor consumers die kolommen op positie doorlopen of een XSD uit het voorbeeld bouwen. Heb je xsi:nil="true" nodig, pak de output dan in met een mini-XSLT of doe een nabewerking — de converter blijft voor draagbaarheid bij simpele lege elementen.
Komen datums en timestamps eruit in ISO-8601?
Ja. SQL-literals als '2024-01-15 10:30:00', DATE '2024-01-15', TIMESTAMP '2024-01-15 10:30:00+00' en het MySQL-achtige '2024-01-15T10:30:00' komen allemaal eruit als ISO-8601-strings (2024-01-15T10:30:00Z als er een tijdzone is, anders gewoon 2024-01-15T10:30:00). Dat is het formaat dat de XML-stack van elke grote taal schoon parseert.
Mag ik alleen een CREATE TABLE plakken, zonder rijen?
Ja. Een CREATE TABLE zonder data levert een XML-skelet op: één leeg element per kolom, in de volgorde waarin de kolommen zijn gedeclareerd. Een fijn startpunt voor een voorbeeld-payload, een XSD-concept of een testfixture die je zelf invult. De datatypen in de CREATE TABLE worden als hint gelezen (datums blijven datums, numerics blijven numerics), maar de lege elementen dragen geen type-info in de output.
Wat als mijn query meerdere tabellen bevat?
Elke INSERT- of CREATE TABLE-instructie produceert een eigen top-level sectie in de output, in de volgorde waarin je ze hebt geschreven. Een gemengd script dat orders aanmaakt, drie orders invoegt en vervolgens zes order_items invoegt, wordt een document met drie tabelsecties, elk verpakt in een container-element. De parser probeert ze niet te joinen of te koppelen — hij bewaart gewoon de structuur die je hebt geplakt.
Worden schema-prefixen als public.orders of dbo.Orders weggewerkt?
Ja. XML-elementnamen mogen geen punten bevatten, dus public.orders wordt <orders>, dbo.Orders wordt <Orders> en my_schema."User Table" wordt <User_Table> (spaties worden underscores omdat XML-namen ook geen spaties toestaan). MySQL-backticks, dubbele aanhalingstekens van PostgreSQL en blokhaken van SQL Server worden op dezelfde manier weggewerkt.
Andere tools die je kunt gebruiken
SQL naar XML is één stukje van de puzzel. Deze tools passen er goed bij: