Blog Reacción Estudio

¡Tu zona de aprendizaje!

Script bash para importar varios archivos SQL desde la línea de comandos en MySQL

Si queremos importar múltiples archivos SQL en una BBDD MySQL y lo hacemos de forma manual puede resultar una tarea repetitiva y lenta. Para solucionar este problema hemos creado un script en bash (shell) el cual obtiene todos los archivos SQL que hay en un directorio y los importa automáticamente a la base de datos indicada.

Veamos el script bash importar_archivos_sql_a_mysql.sh

#!/bin/bash
host=$1
db=$2
user=$3
passwd=$4
if [ "$db" = "" ]; then
 echo "Uso: $0 host db_name user password"
 exit 1
fi
clear
for sql_file in *.sql; do
 echo "Importing $sql_file";
 mysql --host=$host --user=$user --password=$passwd $db< $sql_file;
done         

Supongamos que nuestros archivos SQL y nuestro script en bash se encuentran en el siguiente directorio:

/var/www/import_sql/

Entonces, para ejecutar el script haríamos lo siguiente:

sh /var/www/import_sql/importar_archivos_sql_a_mysql.sh localhost usuario_bbdd contrasena_bbdd nombre_bbdd

Como puedes ver, a la hora de ejecutar el script, hay que pasar los parámetros de conexión de la base de datos MySQL con el orden indicado:

  • Host
  • Usuario
  • Contraseña
  • Nombre de la base de datos

Si hemos introducido correctamente los parámetros de conexión para nuestra base de datos, el script se encargará de importar todos los archivos SQL que haya en el mismo directorio donde se encuentra el script. Si al importar algún archivo SQL se produce un error, aparecerá el mensaje de error en el terminal.