Skip to content

Instantly share code, notes, and snippets.

@gabrielkfr
Created September 4, 2013 01:12
Show Gist options
  • Save gabrielkfr/6431695 to your computer and use it in GitHub Desktop.
Save gabrielkfr/6431695 to your computer and use it in GitHub Desktop.
Script bash que permite exportar una base de datos MySQL o PostgreSQL.
#!/bin/bash
 
# -- DEFINICIÓN VARIABLES DE FECHA Y HORA.
DIA=`date +"%Y%m%d"`
HORA=`date +"%H%M"`
 
# -- CONFIGURACIÓN DE VARIABLES GLOBALES
DUMP_HOME="."
DUMP_FILE="dump_"$DIA"_"$HORA".sql"
 
MYSQL_DBUSER_ADM='root'
MYSQL_DBNAME="mi_db"
PG_DBUSER_ADM="postgres"
PG_DBNAME="mi_db"
 
# -- SE LIMPIA LA CONSOLA Y SE DESPLIEGA EL TITULO DEL PROGRAMA.
clear
echo "EXPORT"
echo "======"
 
# -- SE VERIFICA QUE EL USUARIO HAYA PASADO COMO PARAMETRO DE LA APLICACIÓN EL TIPO
# DE BASE DE DATOS A LA QUE SE TIENE QUE CONECTAR EL SISTEMA (MYSQL O POSTGRESQL)
if [ -z $1 ]; then
echo "Error en la ejecución! Faltan parámetros.."
echo "Ejemplo ejecución:"
echo
echo "  $ sh export.sh [mysql|pg]"
echo
exit
fi
 
# -- SE COMPRUEBA QUE EL PRIMER PARÁMETRO RECIBIDO CORRESPONDA
# A LAS OPCIONES VÁLIDAS QUE SON mysql Y pg.
if [ $1 != "mysql" ] && [ $1 != "pg" ]; then
echo "Error en la ejecución! las opciones para el primer parámetro pueden ser solamente 'mysql' y 'pg' (postgres)."
echo "Ejemplo ejecución:"
echo
echo "  $ sh export.sh [mysql|pg]"
echo
exit
fi
 
# -- SE LE SOLICITA AL OPERADOR QUE INGRESE LA CONTRASEÑA DEL USUARIO
# ADMINISTRADOR DE LA BASE DE DATOS.
STTY_SAVE=$(stty -g)
stty -echo
if [ $1 == "mysql" ]; then
echo "Favor de introducir a continuación la contraseña del usuario '$MYSQL_DBUSER_ADM', administrador del motor de base de datos 'MySQL'."
elif [ $1 == "pg" ]; then
echo "Favor de introducir a continuación la contraseña del usuario '$PG_DBUSER_ADM', administrador del motor de base de datos 'PostgreSQL'."
else
echo "Favor de introducir a continuación la contraseña del usuario administrador del motor de base de datos."
fi
echo
echo -n "Introduzca Password:"
read DBADMIN_SECRET_PASSWD
stty $STTY_SAVE
echo
echo
 
# -- SEGÚN LA BASE DE DATOS ESPECIFICADA SE PROCEDE A EXPORTAR LA BASE DE DATOS.
if [ $1 == "mysql" ]; then
echo "Exportando la base de datos MySQL '$MYSQL_DBNAME' del sistema. Aguarde un momento..."
mysqldump -v -u $MYSQL_DBUSER_ADM -p$DBADMIN_SECRET_PASSWD --database $MYSQL_DBNAME > $DUMP_HOME/mysql-$DUMP_FILE
echo "Fin del proceso de exportación! El archivo de exportación generado se encuentra en '$DUMP_HOME/mysql-$DUMP_FILE'."
echo
elif [ $1 == "pg" ]; then
echo "Exportando la base de datos PostgreSQL '$PG_DBNAME' del sistema. Aguarde un momento..."
export PGUSER=$PG_DBUSER_ADM
export PGPASSWORD=$DBADMIN_SECRET_PASSWD
pg_dump -b -F p --column-inserts $PG_DBNAME > $DUMP_HOME/pg-$DUMP_FILE
unset PGUSER
unset PGPASSWORD
echo "Fin del proceso de exportación! El archivo de exportación generado se encuentra en '$DUMP_HOME/pg-$DUMP_FILE'."
else
echo "Opción no soportada!"
echo
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment