iTank ideas

MySQL: Crear, restaurar y ejecutar SQL por línea de comandos

Me vi en la necesidad de restaurar una tabla de 11 millones de registros y 2.5 GB en un script SQL, márgenes que excedían de la capacidad de phpMyAdmin. Así que explico cómo hacerlo por línea de comandos:

Crear una base de datos por línea de comandos:

mysqladmin -u Usuario -pContraseña create NombreBaseDeDatos

Dónde
– Usuario, no requiere el @localhost, por ejemplo: root
– pContraseña Es importante ponerla a continuación del -p sin espacios

Ejecutar un script SQL -enorme- sobre la base de datos por línea de comandos:

mysql -u Usuario -pContraseña NombreBaseDeDatos < millonesDeInserts.sql

Monitorizar mediante SQL por línea de comandos la evolución de esta barbaridad de inserciones, usé la combinación de varios comandos:

  1. Envié la tarea mysql en ejecución al background: pulsando Control + Z para congelarla y ejecutando bg para que continue en segundo plano. Esto es de los inicios de Unix, así que para más info, mejor lee un manual de la shell Bash.
  2. Ejecutar una sentencia SELECT por línea de comandos
  3. y hacerlo con periodicidad de 2 segundos (watch es uno de esos míticos comandos que también deberías conocer)

watch -n 2 'mysql -u Usuario -pContraseña -D NombreBaseDeDatos -e "select count(*) Num from tabla;'

Como resultado, veremos el número de registros insertados con un tiempo de refresco de 2 segundos.

Más sobre MySQL: Run Query from Bash Script or Linux Command Line