Skip to content

Commit

Permalink
Merge pull request #17 from mfortini/main
Browse files Browse the repository at this point in the history
Aggiunta gestione colonne di tipo data (su consiglio di @aborruso)
  • Loading branch information
aborruso authored Feb 16, 2024
2 parents 0ad96a8 + 2028c4a commit 99e4166
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions posts/csv-ventitre-gigabyte-senza-affanno/index.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -156,10 +156,12 @@ Per poterlo importare occorre filtrare solo le linee che hanno un numero di colo
```bash
unzip "OpenData Complessivo.zip"
awk -F\| '{if (NF-1 == 90) { print } }' < TOTALE.csv > TOTALEfix.csv
duckdb OpenCUP.db -c "CREATE TABLE OpenCUP AS SELECT * FROM read_csv_auto('TOTALEfix.csv',delim='|',parallel=FALSE);"
duckdb OpenCUP.db -c "CREATE TABLE OpenCUP AS SELECT * FROM read_csv_auto('TOTALEfix.csv',delim='|',dateformat='%d-%b-%y',parallel=FALSE);"
```
Notare che è stato necessario esplicitare il formato per la data, in modo che duckdb converta correttamente i campi relativi, che sono del tipo 01-JAN-15. Questo permette sia una migliore gestione dei dati,
che una rappresentazione più efficiente in termini di spazio su disco.

Il file DuckDB risultante, a fronte di un CSV di 23.946.237.777 byte, è 4.466.159.616 byte, con una riduzione a circa 1/6, merito del formato binario contro quello ASCII.
Il file DuckDB risultante, a fronte di un CSV di 23.946.237.777 byte, è 4.431.294.464 byte, con una riduzione a circa 1/6, merito del formato binario contro quello ASCII.

### Prestazioni del formato DuckDB

Expand All @@ -180,7 +182,7 @@ Con il comando
```bash
duckdb OpenCUP.db -c "COPY (SELECT * FROM OpenCUP) TO 'OpenCUP.parquet' (FORMAT 'PARQUET', CODEC 'ZSTD');
```
si ottiene un file Parquet di 2.299.910.076 byte, con una riduzione di circa 1/2 rispetto al formato nativo DuckDB.
si ottiene un file Parquet di 2.296.193.848 byte, con una riduzione di circa 1/2 rispetto al formato nativo DuckDB.
Se con questo comando si hanno problemi di memoria si può provare a impostare `SET preserve_insertion_order=false`:
Expand Down

0 comments on commit 99e4166

Please sign in to comment.