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.