Skip to content
> giho's blog
Go back

~/posts/csv-to-parquet

CSV를 Parquet으로 한 방에 (duckdb)

CSV를 Parquet으로 바꿀 일이 잦다. duckdb 한 줄이면 된다. 자주 쓰니 csv2parquet 스크립트로 묶어뒀다.

#!/bin/bash
set -euo pipefail
usage() {
    echo "Usage: $(basename "$0") <input.csv>" >&2
    exit 1
}
[ "$#" -ne 1 ] && usage
csvfile="$1"
[ ! -f "$csvfile" ] && { echo "Error: file not found: $csvfile" >&2; exit 1; }
[[ "$csvfile" != *.csv ]] && { echo "Error: input must be .csv" >&2; exit 1; }

parquetfile="${csvfile%.csv}.parquet"
echo "Input CSV     : $csvfile"
echo "Output Parquet: $parquetfile"
duckdb -c "COPY (SELECT * FROM read_csv_auto('$csvfile', delim=',')) TO '$parquetfile' (FORMAT PARQUET);"

핵심은 결국 이 한 줄이다.

COPY (SELECT * FROM read_csv_auto('in.csv')) TO 'out.parquet' (FORMAT PARQUET);

read_csv_auto가 타입·구분자를 알아서 추론하고, COPY ... (FORMAT PARQUET)가 압축된 컬럼 포맷으로 떨궈준다. 별도 파이썬/pandas 없이 CLI만으로 끝나는 게 장점.



Previous Post
Karabiner에서 kanata로 전환하기
Next Post
MySQL 쿼리를 Redshift로 옮길 때 걸리는 것들
giho=#searchesc