Tiempo estimado de lectura:

Partiendo de la base de que, además de un volcado completo de MySQL, recomiendo tener volcados individuales de las bases de datos, veamos cómo recuperar registros concretos del volcado global si esto no es posible por cuestiones de espacio.

Si tenemos muchas bases de datos en el fichero SQL lo primero que podemos hacer es averiguar en qué líneas comienzan y terminan las descripciones de cada una de ellas:

$ grep -n -e '-- Current Database:' my_very_big_sql_dump.sql

Esto mostrará por pantalla dónde comienza el volcado de cada base de datos dentro del fichero:

...
18981:-- Current Database: `the_desired_database`
20146:-- Current Database: `the_next_database`
...

Gracias a este comando hemos averiguado que nuestra base de datos comienza en la línea 18981 y terminará un par de líneas antes de la 20146, así que cogeremos el texto contenido entre las líneas 18980 hasta la 20144:

$ sed -n '18980,20144p' my_very_big_sql_dump.sql > the_desired_database.sql

El resto del procedimiento consiste en buscar los registros en el fichero o en una base de datos alternativa que creemos con él.

Sequel Pro

Los usuarios de Mac estamos de enhorabuena. Sequel Pro, un excelente cliente de MySQL para Mac, tiene una orden llamada Copy as INSERT SQL que se puede utilizar en las vistas de contenidos de tabla.

copy_as_insert_sql

Para recuperar rápidamente los registros deseados con sus identificadores originales solamente tendríamos que:

  1. Crear una base de datos alternativa.
  2. Importar el SQL obtenido para nuestra base de datos (edítalo antes por si hubieses copiado una sentencia DROP DATABASE que te pudiese hacer alguna jugarreta).
  3. Filtrar las tablas necesarias para obtener los registros que necesitamos.
  4. Utilizar la opción Copy as INSERT SQL para obtener el SQL a ejecutar en la base de datos original.

A base de pegar esas sentencias SQL en un fichero obtendríamos el script necesario para recuperar los registros que se habían perdido.

Blog Logo

Carlos Escribano

Desarrollador Web desde hace 10 años. Me gusta resolver problemas de forma ingeniosa. Saber más.

Artículos de desarrollo web en español

nettoys.es

Volver al Inicio