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.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.     ACEPTAR