sábado, 17 de octubre de 2009

Importar x registros de mysql

La problemática que tenia era que una base de mysql de un cliente tenia muchas tablas que eran muy muy grandes, y necesitábamos tener además de todas las tablas que eran chicas (que eso lo hicimos con mysqldump -u usuario -pcontraseña base tabla1, tabla2, ... > respaldo.sql, para saber el tamaño de las tablas analizamos un poco en information_schema de mysql y detectamos las tablas chicas, y luego con mysql -u usuario -pcontraseña base < respaldo.sql levantamos el respaldo) debíamos de las tablas grandes (por lo menos de la mayoría) obtener un determinado numero de registros.


Lo que estábamos haciendo era armando un ambiente de testing local con tablas del cliente.




Entonces la idea es ejecutar un select de los primeros 100 registros de una tabla, generar un .sql, y luego este .sql levantarlo en una base local.




Hay que destacar que la estructura de la base de datos no es un problema eso lo podemos replicar (jeje trabajamos con genexus).




El primer paso es en cliente ejecutar es siguiente comando




mysql -u usuario -pcontraseña base -e "select * from tabla limit 10" > tabla.sql


esto nos genera para una tabla un .sql con los primeros 10 registros.


Esto lo debemos de repetir para las n tablas que queramos.




Luego debemos copiar estos sql a nuestro servidor y ejecutar el siguiente comando




mysql -u usuario -pcontraseña base -e "load data infile 'tabla.sql' into table tabla1"


Esto lo que hace es al archivo tabla.sql levantarlo en la tabla que le indiquemos en este ejemplo tabla1




Con estos sencillos ejemplos podemos rápidamente (mas o menos porque lleva un tiempito de proceso) tener un servidor de testing con datos del cliente.


Volver al inicio

No hay comentarios: