Incolla SQL a sinistra e clicca su "Converti" — lo trasformiamo in XMLIncolla SQL

Cosa fa questo strumento

Se ti è capitato di dover riversare un mucchio di righe del database in un file XML per un vendor, un endpoint SOAP legacy o un vecchio job di ETL che si aspetta ancora XML, conosci il ritornello — apri il client SQL, esegui la SELECT, esporti, sistemi l’output a mano, lotti con i formati delle date. Incolla qui il tuo SQL e ti restituisce XML ben formato in un colpo solo. Istruzioni INSERT multi-riga, solo CREATE TABLE di schema, o un mix dei due — stesso risultato.

Il convertitore legge l’SQL come farebbe un database. Ogni riga di un INSERT multi-riga diventa un elemento, e ogni colonna un elemento figlio col nome della colonna. I valori NULL diventano elementi vuoti (così la forma di ogni riga resta uguale). I letterali di tipo data — '2024-01-15 10:30:00', DATE '2024-01-15' o timestamp grezzi — vengono emessi come stringhe ISO-8601, così i parser in Java, .NET, Python o ovunque altro li rileggono senza storie. I tipi numerici mantengono la precisione; i booleani escono come true/false.

I nomi qualificati da schema come public.orders o dbo.Orders vengono ridotti a orders o Orders nel nome dell’elemento, perché i nomi degli elementi XML non possono contenere punti. Identificatori tra virgolette, backtick di MySQL e nomi tra virgolette doppie di PostgreSQL sono trattati allo stesso modo. Butti dentro un CREATE TABLE e ottieni uno scheletro XML per quello schema — un elemento vuoto per colonna, utile per partire con un XSD o un payload di esempio. Più tabelle nella stessa query? Ognuna finisce nell’output come sezione a sé, in ordine.

Come si usa

Tre passaggi. Funziona uguale che tu incolli una riga o mille.

1

Incolla il tuo SQL (o prova l’esempio)

Metti l’SQL così com’è nell’editor di sinistra. Istruzioni INSERT con una o più righe, definizioni CREATE TABLE, o un mix — va tutto bene. Clicca Carica esempio se vuoi vedere come appare un dump realistico di ordini con più tabelle.

Commenti (-- e /* ... */), prefissi di schema, quoting specifico del dialetto (backtick MySQL, virgolette doppie SQLite, parentesi quadre SQL Server) e punti e virgola finali passano tutti senza problemi — non devi pulire niente.

2

Clicca Converti

Clicca sul pulsante verde Converti. Lo strumento fa il parsing dell’SQL, espande ogni riga di un insert multi-riga, normalizza date e booleani e costruisce l’XML in una sola passata. Durante l’elaborazione vedi un breve indicatore di caricamento.

3

Copia l’XML

Il pannello di destra si riempie di XML indentato e ben formato, che qualunque parser XML conforme agli standard accetterà. Copialo direttamente in un body SOAP, una fixture di test, una cartella di drop per ETL, o dove ti serve.

Quando serve davvero

Fixture di seed per il database

Hai una pila di <code>INSERT</code> da uno script di seed e ti servono gli stessi dati in XML per un test d’integrazione o un mock server. Incolli gli insert, ti prendi l’XML, finito — senza editare riga per riga.

SOAP e integrazione enterprise legacy

Un vecchio sistema partner si aspetta un body XML che rispecchi un insieme di righe del database. Salta il codice intermedio che serializza le righe una per una; incolla l’INSERT direttamente e copia l’XML nella tua richiesta SOAP.

Export di audit e compliance

Regolatori e auditor amano ancora l’XML. Trasforma le righe appena INSERT (o quelle catturate da una query sui log) in un documento XML firmabile e archiviabile senza mettere in piedi una pipeline di export.

Pipeline di ETL basate su XML

Alimenti uno strumento di ETL come SSIS, Informatica o una pipeline XSLT fatta in casa? Converti l’SQL di esempio upstream in XML per prototipare la trasformazione prima che il batch vero sia cablato.

Domande comuni

Come gestisce gli INSERT multi-riga?

Un INSERT INTO orders (...) VALUES (...), (...), (...); multi-riga diventa un elemento contenitore per la tabella, con un elemento figlio per riga — ogni figlio prende il nome singolare della tabella (quindi le righe di orders diventano elementi <order> dentro un wrapper <orders>). Ogni riga ha gli stessi figli di colonna, nello stesso ordine della lista di colonne, così l’output resta prevedibile anche con centinaia di righe.

Cosa succede ai valori NULL?

Un NULL nella lista valori diventa un elemento vuoto (ad esempio <middle_name/>) invece di essere scartato. Questo mantiene identica la forma di ogni riga, cosa che conta per i consumer a valle che iterano le colonne per posizione o generano un XSD dal campione. Se ti serve xsi:nil="true", avvolgi l’output con un XSLT minimo o fai post-processing — il convertitore si ferma agli elementi vuoti semplici per portabilità.

Date e timestamp escono in ISO-8601?

Sì. Letterali SQL come '2024-01-15 10:30:00', DATE '2024-01-15', TIMESTAMP '2024-01-15 10:30:00+00' e '2024-01-15T10:30:00' in stile MySQL escono tutti come stringhe ISO-8601 (2024-01-15T10:30:00Z quando è presente il fuso, altrimenti 2024-01-15T10:30:00). È il formato che lo stack XML di qualunque linguaggio importante parsa senza lamentarsi.

Posso incollare solo un CREATE TABLE, senza righe?

Sì. Un CREATE TABLE solo-schema produce uno scheletro XML: un elemento per colonna, vuoto, nell’ordine in cui le colonne sono state dichiarate. È un buon punto di partenza per un payload di esempio, una bozza di XSD o una fixture di test che riempi a mano. I tipi di dato nel CREATE TABLE vengono letti come suggerimento (le date restano date, i numerici restano numerici), ma gli elementi vuoti non riportano informazioni di tipo nell’output.

E se la mia query contiene più tabelle?

Ogni istruzione INSERT o CREATE TABLE produce una propria sezione top-level nell’output, nell’ordine in cui l’hai scritta. Uno script misto che crea orders, inserisce tre ordini e poi sei order_items diventa un documento con tre sezioni di tabella, ciascuna avvolta in un elemento contenitore. Il parser non cerca di fare join o di metterle in relazione — conserva semplicemente la struttura che hai incollato.

Rimuove i prefissi di schema come public.orders o dbo.Orders?

Sì. I nomi degli elementi XML non possono contenere punti, quindi public.orders diventa <orders>, dbo.Orders diventa <Orders> e my_schema."User Table" diventa <User_Table> (gli spazi diventano underscore perché anche gli spazi non sono ammessi nei nomi XML). I backtick di MySQL, le virgolette doppie di PostgreSQL e le parentesi quadre di SQL Server sono rimossi allo stesso modo.

Altri strumenti che potrebbero servirti

SQL a XML è solo un pezzo del puzzle. Questi si abbinano bene: