25 de Noviembre, 2008

CPAN to the rescue!

Hoy me han pedido que borre una serie de registros de una base de datos, concretamente sin saber nada de esto:

  • Qué base de datos es, y ese servidor tenía varias.
  • Sin conocer las tablas, ni las dependencias entre ellas.

Vamos, un marroncillo, de esos que con un poco de ingenio se solucionan muy fácil.

Lo de encontrar la tabla ha sido fácil, porque era una extensión de Typo3 programada en buenas condiciones (con DAO para los datos), así que identificar la base de datos no ha sido traumático ojeando la clase DAO en cuestión. Pero mirando la base de datos... ¡hay muchas tablas!

Así que he buscado un poco, y AutoDia parecía una solución interesante: me conecto con esta herramienta al MySQL, y que me haga un bonito diagrama con las tablas para ver dónde buscar y qué borrar (sin ser perfecto, porque al trabajar con tablas MyISAM no hay integridad referencial, y lo de las claves ajenas no aparece :S).

Genial, aunque no está empaquetado para la distribución con la que trabaja el servidor (y el MySQL no escucha al exterior), está hecho en Perl y sigue el esquema estándar:

$ perl Makefile.pl
$ make
# make install

Pero... ¿qué pasa sin pide Template y XML::Simple (el make nos avisará adecuadamente), y uno de ellos no está empaquetado en nuestra distribución? Pues que usamos CPAN y listo.

Pero CPAN no es solo ese interfaz web a un archivo con mucho Software Libre, sino que también es una herramienta para instalar cualquier cosa del archivo en nuestro sistema.

Así que, ni corto ni perezoso, he ejecutado:

# cpan -i Template XML::Simple

La herramienta me hace algunas preguntas fáciles de contestar (por prudencia he creado /var/cpan para que trabaje en ese directorio para construir los módulos, guardar ahí el caché de búsquedas, etc), y el proceso acaba con los dos componentes instalados.

Ya solo queda usar autodia.pl, obtener un bonito digrama que va a parar a la impresora, y en 5 minutos había localizado en papel las referencias entre tablas para borrar lo que me habían pedido.

Bueno, en realidad es según ser mire, pero para mi CPAN saved the day!

Nota: es cierto que podría haber instalado AutoDia en mi Ubuntu y haber hecho un túnel SSH al MySQL, pero a veces no pensar es más rápido. De hecho he tardado más en escribir esta anotación que en resolver lo que me pedían :P.

Anotación por Juan J. Martínez, clasificada en: perl, software libre.

Hay 2 comentarios

Gravatar

el cpan -i es muy útil, a veces lo que cuesta mas es averiguar exactamente como se llama lo que quieres instalar, pero por ahí hay una web que tiene una lista completa, yo suelo meter el cache del cpan en el home, como siempre jugueteo con este usuario...

por un visitante, en 2008-11-26 18:23:51

Gravatar

Te guarda todo el tema en el directorio de usuario.

Peroooo, si el usuario es root, su partición es en la misma que la raíz, y no me parece buena idea. Por eso lo de /var/cpan, sin más :)

por Juanjo, en 2008-11-26 18:31:30

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: