Blog Reacción Estudio

¡Tu zona de aprendizaje!

Separar un archivo SQL grande en varios archivos pequeños – MySQL

Cuando nuestra base de datos empieza a tener un tamaño considerable, digamos por ejemplo superior a 1 GB, importar este archivo de cero suele ser una tarea tediosa.

Para evitar esto, os vamos a enseñar una herramienta en bash bastante útil para separar este archivo gigantesco en varios archivos más pequeñitos y manejables.

La herramienta de la que hablamos es mysqldumpsplitter y vamos a ver unos ejemplos de uso:

Para instalarlo, podemos descargarlo directamente como un ZIP desde Github o hacer un clone con GIT:

git clone https://github.com/kedarvj/mysqldumpsplitter.git

Ahora, según pone en su documentación, podemos hacer lo siguiente:

Extraer una base de datos única de mysqldump:


sh mysqldumpsplitter.sh --source filename --extract DB --match_str database-name

El comando anterior creará sql para la base de datos especificada a partir del archivo sql «nombre de archivo» especificado y lo almacenará en formato comprimido en database-name.sql.gz.

Extraer tabla individual de mysqldump:

sh mysqldumpsplitter.sh --source nombrearchivo --extract TABLE --match_str nombre-tabla

El comando anterior creará sql para la tabla especificada a partir del archivo mysqldump de «nombre de archivo» especificado y lo almacenará en formato comprimido en database-name.sql.gz.

Extraer tablas que coincidan con la expresión regular de mysqldump:

sh mysqldumpsplitter.sh --source nombrearchivo --extract REGEXP --match_str expresión regular

El comando anterior creará sqls para las tablas que coinciden con la expresión regular especificada del archivo mysqldump de «nombre de archivo» especificado y lo almacenará en formato comprimido en nombre de tabla individual.sql.gz.

Extraiga todas las bases de datos de mysqldump:

sh mysqldumpsplitter.sh --source filename --extract ALLDBS

El comando anterior extraerá todas las bases de datos del archivo mysqldump de «nombre de archivo» especificado y lo almacenará en formato comprimido en nombre de base de datos individual.sql.gz.

Extraiga toda la tabla de mysqldump:

sh mysqldumpsplitter.sh --source filename --extract ALLTABLES

El comando anterior extraerá todas las tablas del archivo mysqldump especificado de «nombre de archivo» y lo almacenará en formato comprimido en el nombre de tabla individual.sql.gz.

Extraiga la lista de tablas de mysqldump:

sh mysqldumpsplitter.sh --source nombrearchivo --extract REGEXP --match_str '(tabla1 | tabla2 | tabla3)'

El comando anterior extraerá las tablas del archivo mysqldump especificado de «nombre de archivo» y las almacenará en formato comprimido en el nombre de tabla individual.sql.gz.

Extraiga una base de datos de mysqldump comprimido:

sh mysqldumpsplitter.sh --source filename.sql.gz --extract DB --match_str 'dbname' --decompression gzip

El comando anterior descomprimirá filename.sql.gz usando gzip, extraerá la base de datos llamada «dbname» de «filename.sql.gz» y la almacenará como out / dbname.sql.gz

Extraiga una base de datos de mysqldump comprimido en un formato sin comprimir:

sh mysqldumpsplitter.sh --source filename.sql.gz --extract DB --match_str 'dbname' --decompression gzip --compression none

El comando anterior descomprimirá filename.sql.gz usando gzip y extraerá la base de datos llamada «dbname» de «filename.sql.gz» y la almacenará como sql out / dbname.sql.

Extraiga todas las tablas de mysqldump en una carpeta diferente:

sh mysqldumpsplitter.sh --source filename --extract ALLTABLES --output_dir / path / to / extracts /

El comando anterior extraerá todas las tablas del archivo mysqldump especificado de «nombre de archivo» y extrae las tablas en formato comprimido a archivos individuales, nombre-tabla.sql.gz almacenado en / ruta / a / extractos /. El script creará la carpeta / ruta / a / extractos / si no existe.

Extraiga una o más tablas de una base de datos en un volcado completo:
Considere que tiene un volcado completo con múltiples bases de datos y desea extraer algunas tablas de una base de datos.

Extraer una base de datos única:
sh mysqldumpsplitter.sh --source filename --extract DB --match_str DBNAME --compression none[/code]

Extraer todas las tablas
sh mysqldumpsplitter.sh --source out / DBNAME.sql --extract REGEXP --match_str" (tbl1 | tbl2) "
aunque podemos usar otra opción para hacer esto en un solo comando de la siguiente manera:

sh mysqldumpsplitter.sh --source filename --extract DBTABLE --match_str "DBNAME. (tbl1 | tbl2)" --compression none

El comando anterior extraerá tbl1 y tbl2 de la base de datos DBNAME en formato sql en la carpeta «out» en el directorio actual.

Puede extraer una sola tabla de la siguiente manera:

sh mysqldumpsplitter.sh --source filename --extract DBTABLE --match_str "DBNAME. (tbl1)" --compression none

Extraiga todas las tablas de la base de datos específica:

mysqldumpsplitter.sh --source filename --extract DBTABLE --match_str "DBNAME. *" --compression none

El comando anterior extraerá todas las tablas de la base de datos DBNAME en formato sql y las almacenará en el directorio «out».

Listar el contenido del archivo mysqldump

mysqldumpsplitter.sh --source filename --desc

El comando anterior enumerará las bases de datos y las tablas del archivo de volcado.