SQL links einfügen und "Konvertieren" klicken — wir machen XML darausSQL einfügen

Was das Tool macht

Wenn du jemals einen Haufen Datenbankzeilen für einen Partner, einen alten SOAP-Endpunkt oder einen betagten ETL-Job, der noch XML erwartet, in eine XML-Datei dumpen musstest, kennst du den Ablauf — Query-Tool auf, SELECT ausführen, exportieren, die Ausgabe von Hand nachbessern, mit Datumsformaten kämpfen. Füge dein SQL stattdessen hier ein und bekomme in einem Rutsch wohlgeformtes XML. Multi-Row-INSERT-Statements, nur das Schema per CREATE TABLE oder beides gemischt — gleiches Ergebnis.

Der Konverter liest SQL so, wie eine Datenbank es tun würde. Jede Zeile eines Multi-Row-INSERTs wird ein Element, jede Spalte ein Kindelement mit dem Spaltennamen. NULL-Werte werden zu leeren Elementen (damit die Struktur jeder Zeile identisch bleibt). Datumsartige Literale — '2024-01-15 10:30:00', DATE '2024-01-15' oder rohe Timestamps — werden als ISO-8601-Strings ausgegeben, damit Parser in Java, .NET, Python oder wo auch immer sie problemlos wieder einlesen. Numerische Typen behalten ihre Präzision; Booleans kommen als true/false raus.

Schemaqualifizierte Namen wie public.orders oder dbo.Orders werden im Elementnamen auf orders bzw. Orders gekürzt, weil XML-Elementnamen keine Punkte enthalten dürfen. Gequotete Identifier, Backticks aus MySQL und Namen in doppelten Anführungszeichen aus PostgreSQL werden genauso behandelt. Wirfst du ein CREATE TABLE rein, bekommst du ein XML-Skelett für dieses Schema — ein leeres Element pro Spalte, praktisch als Grundgerüst für ein XSD oder ein Sample-Payload. Mehrere Tabellen in derselben Query? Jede erscheint in der Ausgabe als eigener Abschnitt, in der Reihenfolge.

So benutzt du es

Drei Schritte. Egal, ob du eine Zeile oder tausend einfügst.

1

SQL einfügen (oder Beispiel ausprobieren)

Pack das SQL so wie es ist in den linken Editor. INSERT-Statements mit einer oder vielen Zeilen, CREATE TABLE-Definitionen oder eine Mischung — alles in Ordnung. Klick auf Beispiel laden, wenn du sehen willst, wie ein realistischer Dump mit mehreren Bestelltabellen aussieht.

Kommentare (-- und /* ... */), Schema-Präfixe, dialektspezifisches Quoting (MySQL-Backticks, SQLite-Doppelanführungszeichen, SQL-Server-Klammern) und abschließende Semikolons — alles läuft durch. Du musst vorher nichts aufräumen.

2

Auf Konvertieren klicken

Klick auf den grünen Konvertieren-Button. Das Tool parst das SQL, expandiert jede Zeile eines Multi-Row-Inserts, normalisiert Datumsangaben und Booleans und baut das XML in einem Durchlauf. Während der Verarbeitung erscheint ein kurzer Lade-Indikator.

3

XML kopieren

Im rechten Panel erscheint eingerücktes, wohlgeformtes XML, das jeder standardkonforme XML-Parser akzeptiert. Kopier es direkt in einen SOAP-Body, eine Testfixture, einen ETL-Drop-Ordner oder wohin auch immer du es brauchst.

Wann das wirklich was bringt

Datenbank-Seed-Fixtures

Du hast einen Stapel <code>INSERT</code>s aus einem Seed-Skript und brauchst dieselben Daten als XML für einen Integrationstest oder einen Mock-Server. Inserts einfügen, XML mitnehmen, fertig — ohne Zeile für Zeile zu editieren.

SOAP und Legacy-Enterprise-Integration

Ein älteres Partnersystem erwartet einen XML-Body, der einer Menge Datenbankzeilen entspricht. Spar dir die Zwischenschicht, die Zeilen einzeln stringifiziert; füge den INSERT direkt ein und kopier das XML in deinen SOAP-Request.

Audit- und Compliance-Exports

Regulierer und Auditoren lieben XML immer noch. Verwandle die Zeilen, die du gerade INSERT hast (oder die aus einem Log-Query kommen), ohne eine Export-Pipeline aufzusetzen in ein signierbares, archivierbares XML-Dokument.

XML-basierte ETL-Pipelines

Du fütterst ein ETL-Tool wie SSIS, Informatica oder eine selbstgebaute XSLT-Pipeline? Konvertiere das vorgelagerte SQL-Sample in XML, um die Transformation zu prototypen, bevor der eigentliche Batch-Job verdrahtet ist.

Häufige Fragen

Wie werden Multi-Row-INSERTs behandelt?

Ein Multi-Row-INSERT INTO orders (...) VALUES (...), (...), (...); wird zu einem Container-Element für die Tabelle mit einem Kind-Element pro Zeile — jedes Kind bekommt den Namen der Singularform der Tabelle (also werden Zeilen aus orders zu <order>-Elementen in einem <orders>-Wrapper). Jede Zeile hat dieselben Spaltenkinder in derselben Reihenfolge wie die Spaltenliste, damit die Ausgabe auch bei Hunderten von Zeilen berechenbar bleibt.

Was passiert mit NULL-Werten?

Ein NULL in der Werteliste wird zu einem leeren Element (z. B. <middle_name/>), nicht weggelassen. So bleibt die Form jeder Zeile identisch, was für nachgelagerte Konsumenten wichtig ist, die Spalten positionsbasiert durchgehen oder aus dem Sample ein XSD bauen. Brauchst du stattdessen xsi:nil="true", wickel die Ausgabe in ein winziges XSLT oder bearbeite sie nach — der Konverter bleibt der Portabilität zuliebe bei schlichten leeren Elementen.

Werden Datumsangaben und Timestamps als ISO-8601 ausgegeben?

Ja. SQL-Literale wie '2024-01-15 10:30:00', DATE '2024-01-15', TIMESTAMP '2024-01-15 10:30:00+00' und das MySQL-typische '2024-01-15T10:30:00' kommen alle als ISO-8601-Strings raus (2024-01-15T10:30:00Z, wenn eine Zeitzone dabei ist, sonst einfach 2024-01-15T10:30:00). Das ist das Format, das der XML-Stack jeder großen Sprache sauber parst.

Kann ich nur ein CREATE TABLE ohne Zeilen einfügen?

Ja. Ein nur schemas-seitiges CREATE TABLE produziert ein XML-Skelett: ein leeres Element pro Spalte, in der Reihenfolge, in der die Spalten deklariert wurden. Ein guter Startpunkt für ein Sample-Payload, einen XSD-Entwurf oder eine Testfixture, die du von Hand füllst. Die Datentypen im CREATE TABLE werden als Hinweise gelesen (Datumsangaben bleiben Datumsangaben, Numerics bleiben Numerics), aber die leeren Elemente tragen keine Typinfo in der Ausgabe.

Was, wenn meine Query mehrere Tabellen enthält?

Jedes INSERT- oder CREATE TABLE-Statement produziert seinen eigenen Top-Level-Abschnitt in der Ausgabe, in der Reihenfolge, in der du sie geschrieben hast. Ein gemischtes Skript, das orders anlegt, drei Bestellungen einfügt und danach sechs order_items einfügt, wird zu einem Dokument mit drei Tabellenabschnitten, jeder in ein Container-Element verpackt. Der Parser versucht nicht, sie zu joinen oder zu verknüpfen — er bewahrt einfach die Struktur, die du eingefügt hast.

Werden Schema-Präfixe wie public.orders oder dbo.Orders entfernt?

Ja. XML-Elementnamen dürfen keine Punkte enthalten, also wird public.orders zu <orders>, dbo.Orders zu <Orders> und my_schema."User Table" zu <User_Table> (Leerzeichen werden zu Unterstrichen, weil XML-Namen auch keine Leerzeichen zulassen). MySQL-Backticks, PostgreSQL-Doppelanführungszeichen und SQL-Server-Klammern werden alle gleich entfernt.

Andere Tools, die du brauchen könntest

SQL zu XML ist nur ein Teil des Puzzles. Diese passen dazu: