Mai capitato di disporre di un serie di file in formato csv e di doverli unire per effettuare importazioni dati o altro?
Come fare?

Se i vari files non hanno una riga di intestazione la cosa è abbastanza banale:

cat *.csv > output.csv

E se ogni files avesse una riga di intestazione e, ovviamente, volessimo mantenere solo l’intestazione presente nel primo file?
Decisamente più complicata la storia!
Mi sono messo a buttar giù un paio di righe di PHP e ho risolto così:

 output.csv\n"; 
}

non sarà il massimo come codice ma fa il suo porco lavoro e ci ho messo pochissimo a scriverlo!

Tronfio e orgoglione del risultato ho scoperto poi che con una sola riga di bash scripting si poteva fare tutto:

{ head -n1 "nomefileiniziale.csv"; echo""; for f in *.csv; do tail -n+2 "$f"; echo""; done; } > output.txt

p.s. chiaramente il file di output non deve avere estensione csv altrimenti lo script ciclerà fino a riempirvi l’intero disco!

Vabbè, vedete voi qual’è la soluzione che più vi aggrada e fatene buon uso! 😉

Unire files csv al volo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *