Skip to content

Instantly share code, notes, and snippets.

@pablopers
Last active May 6, 2018 23:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pablopers/088d142c0e02aa35f847c3aef0b239b5 to your computer and use it in GitHub Desktop.
Save pablopers/088d142c0e02aa35f847c3aef0b239b5 to your computer and use it in GitHub Desktop.
Uno script bash di esempio, che scarica i dati da http://opencup.gov.it/ per la Città Metropolitana di Napoli e li trasforma in CSV e JSON. Costruito a partire da https://bit.ly/2wiDV9h
#!/bin/bash
### requisiti ###
# csvkit
# jq
### requisiti ###
set -x
# scegliere e impostare la cartella di output
cartella="/var/www/html/opencup"
rm "$cartella"/*.zip
# scarico file di interesse da OpenCup (questa é la CMNA)
wget -O "$cartella"/dati.zip http://opencup.gov.it/documents/21195/22370/OpenData+Area+Sud+CSV/833adb80-9e7a-4f1a-97e1-c00289ed6ed2
# rinomino l'output dell'unzip in dati.csv (occhio ha senso soltanto se nel file zip c'è un solo file)
for z in "$cartella"/*.zip; do
unzip "$z";
mv "$(unzip -Z1 $z)" "${z%%.*}.csv";
done
# imposto la PIVA CF dell'ente da usare poi come filtro (questo è CMNA)
PIVACF="01263370635"
# estraggo intestazione
<"$cartella"/dati.csv head -n 1 >"$cartella"/"$PIVACF"_tmp.csv
# estraggo solo i dati della PA con quella PIVA e li aggiungo al file con l'intestazione
<"$cartella"/dati.csv grep -a ''"$PIVACF"'' >>"$cartella"/"$PIVACF"_tmp.csv
# creo un output CSV in UTF-8 e con ',' come separatore
<"$cartella"/"$PIVACF"_tmp.csv csvformat -d "|" -e "ISO-8859-15" >"$cartella"/"$PIVACF".csv
#Query sql per filtro colonne e ordinamento
csvsql --query 'select "CUP","DESCRIZIONE_SINTETICA_CUP","ANNO_DECISIONE","STATO_PROGETTO","COSTO_PROGETTO","REGIONE","PROVINCIA","COMUNE","PIVA_CODFISCALE_SOG_TITOLARE","CATEGORIA_SOGGETTO","CODICE_AREA_SOGGETTO","AREA_SOGGETTO","CODICE_NATURA_INTERVENTO","NATURA_INTERVENTO","CODICE_TIPO_INTERVENTO","TIPOLOGIA_INTERVENTO","CODICE_AREA_INTERVENTO","AREA_INTERVENTO","CODICE_SETTORE_INTERVENTO","SETTORE_INTERVENTO","CODICE_SOTTOSETTORE_INTERVENTO","SOTTOSETTORE_INTERVENTO","CODICE_CATEGORIA_INTERVENTO","CATEGORIA_INTERVENTO","SOGGETTO_RICHIEDENTE","TIPOLOGIA_CUP","DESCRIZIONE_INTERVENTO","STRUTTURA_INFRASTRUTTURA","INDIRIZZO_INTERVENTO","NUMERO_DELIBERA_CIPE","ANNO_DELIBERA","FLAG_LEGGE_OBIETTIVO","FINANZA_PROGETTO","FLAG_TIPO_GENERICO","CUP_IN_RELAZIONE","RUOLO_IN_RELAZIONE","DESC_TIPO_RELAZIONE","DATA_ULTIMA_MODIFICA_SSC","DATA_ULTIMA_MODIFICA_UTENTE","DATA_CHIUSURA_REVOCA","CODICE_LOCALE_PROGETTO","CODICE_STRUMENTO_PROGRAM","STRUMENTO_PROGRAMMAZIONE","CODICE_COPERTURA_FINANZIARIA","COPERTURA_FINANZIARIA","SPONSORIZZAZIONI","ALTRE_INFORMAZIONI","DATA_GENERAZIONE_CUP","CONTROLLO_QUALITA","CUP_MASTER","RAGIONI_COLLEGAMENTO","LINK_OPENCOESIONE","LINK_SCUOLE_SICURE" from "01263370635" order by "ANNO_DECISIONE" DESC,"STATO_PROGETTO" ASC' "$cartella"/01263370635.csv >"$cartella"/cmnacup.csv
#Conversione in json
<"$cartella"/cmnacup.csv csvjson | jq . >"$cartella"/cmnacup.json
# rimuovo i file inutili dalla cartella
rm "$cartella"/"$PIVACF"_tmp.csv
rm "$cartella"/dati.csv
rm "$cartella"/*.zip
rm "$cartella"/01263370635.csv
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment