miércoles, 16 de marzo de 2016

Importar solo una tabla desde un backup hecho con mysqldump

Bueno, sin más le he encontrado una utilidad al SED que puede ser de grana ayuda. Hoy he tenido que restaurar solo una tabla de un backup (generado con mysqldump) a la base de datos en MySQL que está en producción y resulta que el backup pesaba 6 GB, entonces, la fácil: subir el dump a una DB temporal y demorar lo que la máquina me demorara D:, la otra fácil, abrir el archivo y  sacar el "pedacito" de sql para ejecutar solo lo de la tabla. ¿Adivinen que?, ninguna de las dos podría (por recursos y tiempo) jeje.



Bueno al grano, si tienes una jodida base de datos tan grande y solo necesitas la parte de una tabla, sed es la solución, y no solo para bases de datos cabe aclarar, puedes utilizarlo para lo que necesites, y de paso puedes ir probando que todo salga bien antes de guardar lo que necesitas.

El comando es el siguiente:

sed -n -e '/CREATE TABLE.*tabla_requerida/,/CREATE TABLE/p' backup_mysqldump.sql > tabla_requerida.sql

Con esto te un archivo llamado tabla_requerida.sql con la sección de texto que necesitas, sin embargo, puedes ir acomodando un poco más la expresión regular, ya que por ejemplo en este caso te tomara incluyendo el CREATE TABLE siguiente. Si no quieres acomodar la expresión regular, puedes abrir, ahora sí, un archivo (de digamos en mi caso 18 MB) con solo el SQL de la tabla y borrarle al final lo que no necesitas (el CREATE de la siguiente tabla) e importarlo a la base de datos que necesitas.

Nota: si no quieres que te genere el archivo, y solo quieres la salida en la terminal (para por ejemplo redireccionarla hacia otro comando), debes eliminar el > tabla_requerida.sql y listo.


Saludos y que sirva pa' algo alguien esto :P

No hay comentarios:

Publicar un comentario