有没有办法将 50 GB 的 CSV 文件拆分为多个 CSV 文件,每个 1GB 数据并确保其 gzip?
我尝试过做
cat test.csv | split -b 1000000000g -d -a4 - output_prefix --filter='gzip > $FILE.gz'
usage: split [-l line_count] [-a suffix_length] [file [prefix]]
split -b byte_count[K|k|M|m|G|g] [-a suffix_length] [file [prefix]]
split -n chunk_count [-a suffix_length] [file [prefix]]
split -p pattern [-a suffix_length] [file [prefix]]
但它给出了错误。
我没有完整的答案。但我习惯于收集(与你相反的)csv,或者在
grep
的帮助下从某些人那里获取样本,以创建另一个 csv。
所有这些任务以及您的任务的原则是首先提取到两个单独的临时文件中:
$header_file
,仅包含 csv 的标题$row_file
包含 csv 的所有行,而不是标题我就是这样做的,用$1你想要处理的csv文件:
header_file=$(mktemp)
rows_file=$(mktemp)
awk 'FNR>1' "$1" > "$rows_file"
awk 'FNR<2' "$1" > "$header_file"
然后,将
$rows_file
分成另一个临时文件中的各个部分,$part_file
然后将它们连接到一个有效的部分 csv 文件中:
cat "$header_file" "$part_file" >"$part_file.csv"