Questo semplice script genera un file con delle query di update a partire da un input fornito come select da un database.
Una casistica abbastanza diffusa che spesso si risolve applicativamente. Suggerisco l'uso di una procedura del genere nel caso di caricamenti batch di grosse quantità di dati.
#!/bin/sh
mysql -uroot -p calderone -BNe "SELECT id,utente from account;" | awk -v i=0 -v tabella=pippo '{ elencoID[i]=$1; elencoNomi[i]=$2; i++; }
END {
queryUpdate="UPDATE "tabella" SET utente = '\''%s'\'' WHERE id = '\''%s'\'';"
for (i=0; i
printf(queryUpdate"\n",elencoNomi[i],elencoID[i]);
}
}' > query_esempio_awk.sql
Qualche nota per i neofiti:
- awk esegue il codice tra parentesi quadre per ogni record presente nella query di input.
- Ad ogni esecuzione ciascun campo viene individuato come una variabile posizionale $1, $2, ...
- La funzione END viene eseguita solo alla fine dell'input e genera fisicamente il file sql in uscita.
- La variabile NR è una variabile built-in di awk è indica il "Number of Row"
Nessun commento:
Posta un commento