Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- ## Este script toma la lista de deudores como fuente
- ## (pastebin.com/raw/T0xvw2va), y extrae la lista de deudores (a partir de la
- ## columna 23), creando un fichero (variable OUTXT), que no es más que una serie
- ## de comandos SQL que:
- ##
- ## - crean la base de datos (CREATE DATABSE) y la tabla (CREATE TABLE) y
- ## - y rellenan la tabla con los datos extraidos del fichero fuente (INSERTs).
- ##
- ## --- INICIO VARIABLES DE USUARIO
- ## En esta sección puedes cambiar lo que quieras.
- FILETXT=listado_deudores.txt # Fichero original (pastebin.com/raw/T0xvw2va)
- OUTXT=createdb_deudores.sql # Nombre del fichero a generar para crear la BD, su usuario y rellenar con FILETXT
- DBNAME=\`debtor\` # Nombre de la nueva BD
- TBLNAME=\`debtor\` # Nombre de la única tabla de dicha BD
- # A partir
- IDCOL=\`id\` # Columna utilizada como clave primaria (un entero).
- NIFCOL=\`NIF\`
- COMPANYNAMECOL=\`companyname\`
- DEBTCOL=\`debt\` # El dinero que debe la empresa.
- ## -- FIN VARIABLES DE USUARIO
- # Se creará un índice para NIF y COMPANY NAME (para acelerar búsquedas, además de ayudarle/obligarle a detectar/prohibir repeticiones).
- TBLSCHEMA=$(cat <<EOF
- CREATE TABLE $DBNAME.$TBLNAME (
- $IDCOL INT NOT NULL AUTO_INCREMENT,
- $NIFCOL CHAR(9) NOT NULL,
- $COMPANYNAMECOL VARCHAR(2048) COLLATE utf8mb4_spanish_ci NOT NULL,
- $DEBTCOL DECIMAL(16, 2) NOT NULL,
- PRIMARY KEY ($IDCOL),
- UNIQUE ($NIFCOL (8)),
- UNIQUE ($COMPANYNAMECOL (40))
- ) ENGINE = InnoDB;
- EOF
- )
- TMPLINS="INSERT INTO $DBNAME.$TBLNAME ($DBNAME.$TBLNAME.$NIFCOL, $DBNAME.$TBLNAME.$COMPANYNAMECOL, $DBNAME.$TBLNAME.$DEBTCOL) VALUES (\"%s\", \"%s\", %s);"
- echo -e "START TRANSACTION;\n" > $OUTXT
- echo -e "CREATE DATABASE $DBNAME;\n" >> $OUTXT
- echo -e "$TBLSCHEMA" >> $OUTXT
- cat $FILETXT | tail -n +24 | tr -d "\r" | tr "\t" "|" | while read line
- do
- echo >> $OUTXT
- echo $line | awk -F "|" -v TMPL="$TMPLINS" '{ sub(/,/, ".", $3); gsub(/\42/, "\\\42", $2); printf(TMPL, $1, $2, $3); }' >> $OUTXT
- done
- echo -e "\n\nCOMMIT;" >> $OUTXT
- echo -e "El script SQL generado se encuentra en el fichero $OUTXT.\n"
- echo -e "Puedes ejecutarlo por ejemplo con\n"
- echo -e " mysql -u user -h localhost -p < $OUTXT"
- echo -e "\nObviamente, <user> debe tener los privilegios suficientes.\n"
- echo -e "Una vez creado, puedes obtener un DUMP de la base de datos, por ejemplo con\n"
- PLAINDBNAME="${DBNAME//\`/}"
- echo -e " mysqldump -u user -h localhost -p $PLAINDBNAME > $PLAINDBNAME_dump.sql";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement