Advertisement
Guest User

Script creador MySQL de deudores hacienda

a guest
Dec 24th, 2015
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.47 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. ## Este script toma la lista de deudores como fuente
  4. ## (pastebin.com/raw/T0xvw2va), y extrae la lista de deudores (a partir de la
  5. ## columna 23), creando un fichero (variable OUTXT), que no es más que una serie
  6. ## de comandos SQL que:
  7. ##
  8. ##    - crean la base de datos (CREATE DATABSE) y la tabla (CREATE TABLE) y
  9. ##    - y rellenan la tabla con los datos extraidos del fichero fuente (INSERTs).
  10. ##
  11.  
  12. ## --- INICIO VARIABLES DE USUARIO
  13. ## En esta sección puedes cambiar lo que quieras.
  14. FILETXT=listado_deudores.txt # Fichero original (pastebin.com/raw/T0xvw2va)
  15. OUTXT=createdb_deudores.sql # Nombre del fichero a generar para crear la BD, su usuario y rellenar con FILETXT
  16.  
  17. DBNAME=\`debtor\` # Nombre de la nueva BD
  18. TBLNAME=\`debtor\` # Nombre de la única tabla de dicha BD
  19.  
  20. # A partir
  21. IDCOL=\`id\` # Columna utilizada como clave primaria (un entero).
  22. NIFCOL=\`NIF\`
  23. COMPANYNAMECOL=\`companyname\`
  24. DEBTCOL=\`debt\` # El dinero que debe la empresa.
  25.  
  26. ## -- FIN VARIABLES DE USUARIO
  27.  
  28. # Se creará un índice para NIF y COMPANY NAME (para acelerar búsquedas, además de ayudarle/obligarle a detectar/prohibir repeticiones).
  29. TBLSCHEMA=$(cat <<EOF
  30. CREATE TABLE $DBNAME.$TBLNAME (
  31.   $IDCOL INT NOT NULL AUTO_INCREMENT,
  32.   $NIFCOL CHAR(9) NOT NULL,
  33.   $COMPANYNAMECOL VARCHAR(2048) COLLATE utf8mb4_spanish_ci NOT NULL,
  34.   $DEBTCOL DECIMAL(16, 2) NOT NULL,
  35.  
  36.   PRIMARY KEY ($IDCOL),
  37.   UNIQUE ($NIFCOL (8)),
  38.   UNIQUE ($COMPANYNAMECOL (40))
  39.  
  40. ) ENGINE = InnoDB;
  41. EOF
  42. )
  43.  
  44. TMPLINS="INSERT INTO $DBNAME.$TBLNAME ($DBNAME.$TBLNAME.$NIFCOL, $DBNAME.$TBLNAME.$COMPANYNAMECOL, $DBNAME.$TBLNAME.$DEBTCOL) VALUES (\"%s\", \"%s\", %s);"
  45.  
  46. echo -e "START TRANSACTION;\n" > $OUTXT
  47. echo -e "CREATE DATABASE $DBNAME;\n" >> $OUTXT
  48.  
  49. echo -e "$TBLSCHEMA" >> $OUTXT
  50.  
  51. cat $FILETXT | tail -n +24 | tr -d "\r" | tr "\t" "|" | while read line
  52. do
  53.     echo >> $OUTXT
  54.     echo $line | awk -F "|" -v TMPL="$TMPLINS" '{ sub(/,/, ".", $3); gsub(/\42/, "\\\42", $2); printf(TMPL, $1, $2, $3); }' >> $OUTXT
  55. done
  56.  
  57. echo -e "\n\nCOMMIT;" >> $OUTXT
  58.  
  59. echo -e "El script SQL generado se encuentra en el fichero $OUTXT.\n"
  60. echo -e "Puedes ejecutarlo por ejemplo con\n"
  61. echo -e "    mysql -u user -h localhost -p < $OUTXT"
  62.  
  63. echo -e "\nObviamente, <user> debe tener los privilegios suficientes.\n"
  64. echo -e "Una vez creado, puedes obtener un DUMP de la base de datos, por ejemplo con\n"
  65.  
  66. PLAINDBNAME="${DBNAME//\`/}"
  67.  
  68. echo -e "    mysqldump -u user -h localhost -p $PLAINDBNAME > $PLAINDBNAME_dump.sql";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement