Pega SQL a la izquierda y pulsa "Convertir" — lo pasamos a XMLPega SQL

Qué hace esta herramienta

Si alguna vez has tenido que volcar un montón de filas de base de datos a un archivo XML para un proveedor, un endpoint SOAP heredado o un viejo job de ETL que todavía espera XML, ya conoces la rutina — abres una herramienta de consultas, ejecutas el SELECT, exportas, retocas la salida a mano y peleas con los formatos de fecha. Pega aquí tu SQL y obtienes XML bien formado en una sola pasada. Sentencias INSERT de varias filas, solo CREATE TABLE con el esquema, o una mezcla de ambos — el resultado es el mismo.

El conversor lee el SQL como lo haría una base de datos. Cada fila de un INSERT de varias filas se convierte en un elemento, y cada columna pasa a ser un elemento hijo con el nombre de la columna. Los valores NULL se convierten en elementos vacíos (así la forma de cada fila se mantiene igual). Los literales de fecha — '2024-01-15 10:30:00', DATE '2024-01-15' o timestamps crudos — se emiten como cadenas ISO-8601, de modo que los parsers de Java, .NET, Python o de donde sea los leerán sin problemas. Los tipos numéricos conservan la precisión; los booleanos salen como true/false.

Los nombres cualificados con esquema como public.orders o dbo.Orders se reducen a orders o Orders en el nombre del elemento, porque los nombres de elemento XML no pueden llevar puntos. Los identificadores entrecomillados, los backticks de MySQL y los nombres con comillas dobles de PostgreSQL se tratan igual. Si pegas un CREATE TABLE, obtienes un esqueleto XML de ese esquema — un elemento vacío por columna, útil para arrancar un XSD o un payload de muestra. ¿Varias tablas en la misma consulta? Cada una aparece en la salida como su propia sección, en orden.

Cómo usarlo

Tres pasos. Funciona igual si pegas una fila o mil.

1

Pega tu SQL (o prueba el ejemplo)

Suelta el SQL tal cual en el editor de la izquierda. Sentencias INSERT con una o muchas filas, definiciones CREATE TABLE, o una mezcla — todo vale. Pulsa Cargar ejemplo si quieres ver cómo queda un volcado realista de pedidos con varias tablas.

Los comentarios (-- y /* ... */), los prefijos de esquema, las comillas específicas del dialecto (backticks de MySQL, comillas dobles de SQLite, corchetes de SQL Server) y los puntos y coma finales funcionan sin problema — no hace falta que limpies nada.

2

Pulsa Convertir

Haz clic en el botón verde Convertir. La herramienta parsea el SQL, expande cada fila del insert multi-fila, normaliza fechas y booleanos y construye el XML en una sola pasada. Verás un pequeño indicador de carga mientras corre.

3

Copia el XML

El panel de la derecha se rellena con XML indentado y bien formado, que aceptará cualquier parser de XML conforme al estándar. Cópialo directo a un body SOAP, a un fixture de pruebas, a una carpeta de drop de ETL o a donde lo necesites.

Cuándo viene bien de verdad

Fixtures de semilla para base de datos

Tienes un montón de <code>INSERT</code>s de un script de seed y necesitas los mismos datos en XML para un test de integración o un mock server. Pega los inserts, te llevas el XML, listo — sin editar fila por fila.

SOAP e integración legada

Un sistema socio antiguo espera un body XML que refleje un conjunto de filas de base de datos. Ahórrate el código intermedio que serializa filas una a una; pega el INSERT directo y copia el XML a tu petición SOAP.

Exportes de auditoría y cumplimiento

A los reguladores y auditores les sigue gustando el XML. Convierte las filas que acabas de INSERTAR (o las que sacaste de una consulta sobre logs) en un documento XML firmable y archivable sin montar un pipeline de exportación.

Pipelines de ETL basados en XML

¿Alimentas una herramienta de ETL como SSIS, Informatica o un pipeline XSLT hecho en casa? Convierte el SQL de muestra upstream a XML para prototipar la transformación antes de cablear el batch real.

Preguntas frecuentes

¿Cómo trata las sentencias INSERT de varias filas?

Un INSERT INTO orders (...) VALUES (...), (...), (...); multi-fila se convierte en un elemento contenedor para la tabla, con un elemento hijo por fila — cada hijo toma el nombre en singular de la tabla (así las filas de orders se convierten en elementos <order> dentro de un envoltorio <orders>). Todas las filas llevan los mismos hijos de columna, en el mismo orden que la lista de columnas, para que la salida se mantenga predecible aunque tengas cientos de filas.

¿Qué pasa con los valores NULL?

Un NULL en la lista de valores se convierte en un elemento vacío (por ejemplo <middle_name/>) en vez de descartarse. Así la forma de cada fila queda idéntica, lo cual importa para consumidores que recorren columnas por posición o que construyen un XSD a partir de la muestra. Si necesitas xsi:nil="true", envuelve la salida con un XSLT pequeñito o hazlo en post-proceso — el conversor se queda en elementos vacíos sencillos por portabilidad.

¿Las fechas y timestamps salen en ISO-8601?

Sí. Literales SQL como '2024-01-15 10:30:00', DATE '2024-01-15', TIMESTAMP '2024-01-15 10:30:00+00' y el '2024-01-15T10:30:00' al estilo MySQL salen todos como cadenas ISO-8601 (2024-01-15T10:30:00Z cuando hay zona horaria, o 2024-01-15T10:30:00 sin ella). Es el formato que el stack XML de cualquier lenguaje grande parsea sin rechistar.

¿Puedo pegar solo un CREATE TABLE sin filas?

Sí. Un CREATE TABLE sin datos produce un esqueleto XML: un elemento por columna, vacío, en el orden en que declaraste las columnas. Es un buen punto de partida para un payload de muestra, un borrador de XSD o un fixture de pruebas que rellenas a mano. Los tipos de datos del CREATE TABLE se leen como pistas (las fechas siguen siendo fechas, los numéricos siguen siendo numéricos), pero los elementos vacíos no arrastran información de tipo en la salida.

¿Y si mi consulta tiene varias tablas?

Cada sentencia INSERT o CREATE TABLE produce su propia sección de primer nivel en la salida, en el orden en que las escribiste. Un script mixto que crea orders, inserta tres pedidos y luego inserta seis order_items se convierte en un documento con tres secciones de tabla, cada una envuelta en un contenedor. El parser no intenta unirlas ni relacionarlas — solo conserva la estructura que pegaste.

¿Quita prefijos de esquema como public.orders o dbo.Orders?

Sí. Los nombres de elemento XML no pueden contener puntos, así que public.orders se convierte en <orders>, dbo.Orders en <Orders> y my_schema."User Table" en <User_Table> (los espacios pasan a guiones bajos porque los nombres XML tampoco admiten espacios). Los backticks de MySQL, las comillas dobles de PostgreSQL y los corchetes de SQL Server se retiran igual.

Otras herramientas que puedes necesitar

SQL a XML es solo una pieza del puzle. Estas encajan bien con ella: