Algunas veces puede ocurrir que por pereza, solo tengamos un backup completo (mysqldump –all-databases) con más de una base de datos y queramos restaurar una única base de datos. Por internet circulan algunos tips algo peligrosos como es el uso de mysql –one-database, el cual no es aconsejable. Conozco algún gurú que al final, lo que hace es recuperar la copia en un sistema local y después hacer el dump de la base de datos. Toda una perdida de tiempo.
Actualziación
Se actualizo el contenido y el código el 21/11/2018mysql –one-database
Esta opción esta desaconsejada incluso por MySQL, y puede ser útil en ciertos escenarios (sobre todo cuando trabajamos con logs binarios), que requiere un conocimiento más elevado de MySQL que a lo que solemos estar acostumbrados. Mejor ir a lo práctico.
Filtrar el fichero dump con sed
Para mi la mejor opción que llevo años usándola. Sencilla, eficaz y adaptable, ya que para mas tranquilidad podemos adecuar el código para hacerlo en dos pasos, con el fin de verificar o de manipular la salida, si queremos cambiar de nombre la base de datos.
Versión actualizada 21/11/2018 (me funciona)
sed -n '/^-- Current Database:nombre_de_la_base_de_datos
/,/^-- Current Database:/p' nombre_del_backup.sql > nombre_de_la_base_de_datos.sql
Información sobre el accesso
En mi codigo no uso mysql -u user -p por que prefiero tener en mi entorno una acutentificacion basada en el fichero my.cnf. Si no usas este método debes añadir al comando mysql donde aparezca el par -u user -pVersión antigua (no funciona siempre)
cat mysqldumped.sql | \
sed -n -e '/^CREATE DATABASE.*the_database_you_want/,/^CREATE DATABASE/ p' | \
sed -e '$d' | \
mysql -u user -p
Versión una sola linea (versión antigua)
cat all-databases.sql | sed -n -e '/^CREATE DATABASE.*the_database_you_want/,/^CREATE DATABASE/ p' | sed -e '$d' | mysql -u user -p
Dump SQL
Si el dump no contiene (mala praxis) CREATE DATABASE, puedes usar en su lugar USE.Evidentemente podemos adaptar el script para que en lugar de hacer el restore directamente volquemos la salida a un fichero de texto, con el fin de verificar y/o manipular los datos de la salida.
Comparte este artículo
Restaurar una sola tabla de un fichero de mysqldump (2018-04-17)
Bueno, en vez de hacer un nuevo artículo prefiero poner la solución actualizando este.
¿Alguna has necesitado o necesitas restaurar una sala tabla? Bueno es sencillo solo hay que cambiar un poco el código anterior
Versión actualizada 21/11/2018
sed -n '/^-- Table structure for table nombre_de_la_tabla/,/^-- Table structure for table /p' backup_de_la_base_dedatos.sql > nombre_de_la_tabla.sql
Versión antigua
cat backup_de_database.sql|sed -n -e '/-- Table structure for table nombre_de_la_tabla`/,/-- Table structure for table/ p' | sed -e '$d' | mysql nombre_de_la_base_de_datos
Espero que te sea útil.
Comments 1
Author
Un tip adicional. Si queremos volcar la tabla en otra con otro nombre hay que cambiar, los insert, los locks, el create de la tabla etc.