Haciendo MySQLdumps más amigables
Hace un tiempo había tenido que tratar con dumps de MySQL generados por mysqldump(1), a falta de una forma de control de versiones más específica (que por suerte no llegó a hacer falta) se utilizó git(7). Ahora bien, git permite hacer diff entre versiones, pero esto (al menos por defecto) se hace línea por línea, lo que produce que los diff entre dumps muestren grandes cambios aunque solo se produzcan en una fila de la base de datos, para solucionar ese inconveniente está este programa sqlsplit.c.
El programa no está muy pulido, tiene una función main que solo abre archivos y otra que (con la ayuda de dos macros *_*) simula algo parecido a un autómata de estados (realmente con una pila), la compilación es simple.
1 |
|
Por ejemplo, si la entrada fuera
1 2 3 4 5 |
|
Haciendo esto...
1 |
|
Conseguiríamos algo más legible
1 2 3 4 5 6 7 8 |
|
Eso es todo, por supuesto si quisiéramos que aceptar o mostrar la salida por el terminal (por ejemplo para tomar o devolver archivos comprimidos) usaríamos /dev/stdin como entrada y/o /dev/stdout como salida.