Dividir volcados SQL en partes listas para importar.
Suelta un archivo de volcado SQL (.sql) y divide sus sentencias INSERT en archivos más pequeños. El preámbulo (CREATE TABLE, SET, LOCK) se preserva al principio de cada parte.
¿Cuándo necesitas dividir un volcado SQL?
Un volcado de MySQL o PostgreSQL que crece más allá de unos cientos de MB deja de ser importable de una sola vez. El destino puede imponer un límite de max_allowed_packet, el import puede agotar el tiempo antes de terminar, el panel de hosting puede rechazar cualquier cosa por encima de un tamaño fijo, o un corte de conexión a media importación puede forzarte a empezar desde cero sin forma de reanudar. Dividir el volcado en partes más pequeñas listas para importar resuelve todo eso — cada parte se importa independientemente, puedes ejecutarlas en paralelo, y un fallo en una no invalida el resto.
- Paneles de hosting (cPanel, Plesk) que limitan los imports de phpMyAdmin
- Migraciones de base de datos donde necesitas monitorizar el progreso por chunk
- Restaurar en un servidor nuevo con un max_allowed_packet estricto
- Compartir un volcado saneado por email con límites de tamaño de adjunto
- Lanzar jobs ETL que cargan una parte por worker en paralelo
- Recuperarse de un import a medias sin re-ejecutar todo
Por qué los volcados SQL son difíciles de dividir a mano
Un volcado SQL no es un CSV. Tiene un preámbulo (CREATE TABLE, SET NAMES, LOCK TABLES, ALTER TABLE … DISABLE KEYS) que debe aparecer al principio de cada archivo de import, más miles de sentencias INSERT que hay que distribuir entre las partes. Una división ingenua línea a línea rompe dos cosas a la vez: el preámbulo falta en todas las partes excepto la primera, así que el esquema no está definido, y un INSERT que abarca varias líneas se corta a la mitad, dejando un error de sintaxis en dos archivos adyacentes.
MessyMatch parsea el volcado con un tokenizer consciente de SQL que respeta los literales de cadena, los comentarios y los bloques con dollar-quote. Identifica el preámbulo, distribuye las sentencias entre las partes, y escribe el preámbulo al principio de cada parte para que cada archivo se importe limpiamente por sí solo.
Cómo funciona el divisor de SQL
El volcado se trata como un único input de texto en crudo — no se ejecuta ningún SQL, el parser sólo lee y corta el texto. El tokenizer recorre el archivo, reconociendo los límites de sentencia (puntos y coma que no están dentro de una cadena o comentario), y clasifica cada sentencia como preámbulo o cuerpo. Las sentencias del cuerpo — casi siempre INSERTs — se distribuyen entre las partes que pediste, por número de sentencias, número de archivos o tamaño en bytes. El preámbulo se copia al principio de cada parte.
Los cortes sólo ocurren entre sentencias completas. Un INSERT multi-línea, un INSERT extendido con muchas tuplas, o cualquier sentencia que abarque más de una línea se mantiene intacto en la parte en que cae. Si el volcado contiene constructos que el parser no puede garantizar dividir de forma segura (procedimientos, triggers, funciones) rechaza con un mensaje claro en lugar de producir salida rota.
Qué maneja el divisor
- Detecta el preámbulo (sentencias CREATE TABLE, SET, LOCK)
- Repite el preámbulo al principio de cada parte
- Distribuye las sentencias INSERT uniformemente entre las partes
- Divide por número de sentencias, número de archivos o tamaño en bytes
- Respeta literales de cadena, comentarios y bloques con dollar-quote
- Rechaza dividir un volcado que contenga constructos no seguros
Límites honestos
Este divisor está construido para el caso común: un volcado producido por mysqldump o pg_dump con un INSERT por sentencia y un preámbulo estándar. Si tu volcado contiene procedimientos almacenados, triggers, funciones, DDL complejo o extensiones específicas del proveedor, el parser lo marca como demasiado complejo y rechaza — dividir esos de forma segura necesita un motor SQL real, no un tokenizer. La solución suele ser regenerar el volcado en modo data-only (--no-create-info para mysqldump) y ejecutar el divisor sobre ese.
Browser-first por diseño
El contenido SQL se procesa en tu navegador con un Web Worker y no se transmite a nuestros servidores. Nuestros servidores no tienen un endpoint que reciba los datos del volcado — el Web Worker lee el archivo desde el disco, ejecuta la división localmente y devuelve las partes al navegador para descargar. Sólo registramos metadatos de la operación (número de filas, tamaño, formato, tiempo) para los límites antiabuso. Mira la política de privacidad para la lista completa.
Herramientas relacionadas
Preguntas frecuentes
¿Qué tipo de volcados SQL soporta?+
Volcados simples con un INSERT por sentencia y un preámbulo que incluye líneas CREATE TABLE, SET y LOCK. Volcados complejos con procedimientos, triggers o funciones no están soportados.
¿Se subirán mis datos SQL?+
No. El volcado se parsea en tu navegador. El servidor nunca ve el contenido SQL.
¿Cortará el divisor una sentencia?+
Nunca. El parser sólo corta entre sentencias; las líneas INSERT y las sentencias multi-línea se mantienen intactas.
¿Se repite el preámbulo en cada parte?+
Sí. Las sentencias CREATE TABLE, SET y LOCK se copian al principio de cada parte para que cada archivo se importe limpiamente por sí solo.
¿Cómo de grande puede ser mi volcado SQL?+
Los usuarios anónimos pueden dividir volcados de hasta 100 MB. Las cuentas gratuitas hasta 250 MB.
¿Y si el parser marca mi volcado como demasiado complejo?+
Significa que el volcado contiene constructos que no podemos garantizar dividir de forma segura. Exporta un volcado más simple (sólo datos, un INSERT por línea) y vuelve a intentarlo.