Gunakan perintah pemisahan Linux:
split -l 20 file.txt new
Pisahkan file "file.txt" menjadi file yang dimulai dengan nama "baru" yang masing-masing berisi 20 baris teks.
Ketik man split
di prompt Unix untuk informasi lebih lanjut. Namun Anda harus terlebih dahulu menghapus header dari file.txt (menggunakan tail
perintah, misalnya) dan kemudian menambahkannya kembali ke setiap file yang dipisahkan.
Membuatnya menjadi fungsi. Sekarang Anda dapat memanggil splitCsv <Filename> [chunkSize]
splitCsv() {
HEADER=$(head -1 $1)
if [ -n "$2" ]; then
CHUNK=$2
else
CHUNK=1000
fi
tail -n +2 $1 | split -l $CHUNK - $1_split_
for i in $1_split_*; do
sed -i -e "1i$HEADER" "$i"
done
}
Ditemukan di:http://edmondscommerce.github.io/linux/linux-split-file-eg-csv-and-keep-header-row.html
One-liner yang mempertahankan baris tajuk di setiap file terpisah. Contoh ini memberi Anda 999 baris data dan satu baris header per file.
cat bigFile.csv | parallel --header : --pipe -N999 'cat >file_{#}.csv'
https://stackoverflow.com/a/53062251/401226 di mana jawabannya memiliki komentar tentang menginstal versi paralel yang benar (di ubuntu gunakan paket paralel khusus, yang lebih baru daripada yang dibundel di moreutils)
Ini seharusnya berhasil !!!
file_name
=Nama file yang ingin dipisah.
10000
=Jumlah baris yang akan berisi setiap file yang dipisah
file_part_
=Awalan nama file terpisah (file_part_0,file_part_1,file_part_2..dll terus berlanjut)
split -d -l 10000 file_name.csv file_part_