Dengan nodejs saya ingin mengurai file .csv dari 10.000 catatan dan melakukan beberapa operasi pada setiap baris. Saya mencoba menggunakan http://www.adaltas.com/projects/node-csv . Saya tidak bisa menghentikan ini di setiap baris. Ini baru saja membaca semua 10.000 rekaman. Saya perlu melakukan hal berikut:
- membaca csv baris demi baris
- melakukan operasi yang memakan waktu di setiap baris
- pergi ke baris berikutnya
Adakah yang bisa menyarankan ide alternatif di sini?
Jawaban:
Sepertinya Anda perlu menggunakan beberapa solusi berbasis aliran, sudah ada perpustakaan seperti itu jadi sebelum menemukan kembali diri Anda sendiri, coba perpustakaan ini, yang juga mencakup dukungan validasi. https://www.npmjs.org/package/fast-csv
sumber
Saya menggunakan cara ini: -
sumber
parse
tidak ditentukan. Apakah ada sesuatu yang saya lewatkan? Ketika saya menjalankannpm install csv-parse
dan kemudian menambahkan kode sayavar parse = require("csv-parse");
, maka itu berhasil. Apakah kamu yakin milikmu bekerja? Either way, saya suka solusi ini (bahkan jika saya harus menyertakancsv-parse
modulcsv-parse
modul.Solusi saya saat ini menggunakan modul async untuk dijalankan secara seri:
sumber
csv-parser
alih-alihcsv-parse
digunakan dalam beberapa jawaban di atas.csv-parser
datang sekitar 2 tahun kemudiancsv-parse
.csv-parser
lebih baik, karena mudah untuk menangani header melalui itu.Instal parser csv terlebih dahulu:
Jadi misalkan Anda memiliki file csv seperti ini:
Anda dapat melakukan operasi yang diperlukan sebagai:
Untuk bacaan lebih lanjut lihat
sumber
Untuk menghentikan sementara streaming di fast-csv, Anda dapat melakukan hal berikut:
sumber
Proyek node-csv yang Anda rujuk sepenuhnya cukup untuk tugas mengubah setiap baris dari sebagian besar data CSV, dari dokumen di: http://csv.adaltas.com/transform/ :
Dari pengalaman saya, saya dapat mengatakan bahwa ini juga merupakan implementasi yang agak cepat, saya telah mengerjakannya pada kumpulan data dengan hampir 10k catatan dan waktu pemrosesan berada pada tingkat puluhan milidetik yang wajar untuk seluruh rangkaian.
Rearding jurka 's aliran solusi berbasis saran: simpul-csv IS aliran berdasarkan dan mengikuti Node.js' mengalir API.
sumber
The cepat-csv NPM modul dapat membaca data baris demi baris dari file csv.
Berikut ini contohnya:
sumber
fromStream()
dan situs proyeknya tidak memiliki contoh & dokumentasi.Saya membutuhkan pembaca csv asinkron dan awalnya mencoba jawaban @Pransh Tiwari tetapi tidak dapat membuatnya berfungsi dengan
await
danutil.promisify()
. Akhirnya saya menemukan node-csvtojson , yang fungsinya hampir sama dengan csv-parser, tetapi dengan promise. Berikut adalah contoh penggunaan csvtojson dalam tindakan:sumber
Coba plugin npm baris demi baris.
sumber
ini adalah solusi saya untuk mendapatkan file csv dari url eksternal
sumber
Solusi untuk melakukan tugas ini dengan await / async :
sumber
Ok jadi ada banyak jawaban di sini dan saya rasa mereka tidak menjawab pertanyaan Anda yang menurut saya mirip dengan saya.
Anda perlu melakukan operasi seperti menghubungi database atau api bagian ketiga yang akan memakan waktu dan asyncronus. Anda tidak ingin memuat seluruh dokumen ke dalam memori karena terlalu besar atau alasan lain sehingga Anda perlu membaca baris demi baris untuk memproses.
Saya telah membaca ke dokumen fs dan dapat berhenti saat membaca tetapi menggunakan panggilan .on ('data') akan membuatnya terus menerus yang sebagian besar dari jawaban ini menggunakan dan menyebabkan masalah.
PEMBARUAN: Saya tahu lebih banyak info tentang Aliran daripada yang saya inginkan
Cara terbaik untuk melakukannya adalah dengan membuat aliran yang dapat ditulis. Ini akan menyalurkan data csv ke aliran Anda yang dapat ditulis yang dapat Anda kelola panggilan asyncronus. Pipa akan mengelola buffer sampai ke pembaca sehingga Anda tidak akan menggunakan banyak memori
Versi Sederhana
Versi Kelas
METODE LAMA:
MASALAH DENGAN mudah dibaca
Anda akan melihat sebuah
reading
bendera. Saya perhatikan bahwa untuk beberapa alasan tepat di dekat akhir file .on ('readable') dipanggil untuk kedua kalinya pada file kecil dan besar. Saya tidak yakin mengapa tetapi ini memblokirnya dari proses kedua membaca item baris yang sama.sumber
Saya menggunakan yang sederhana ini: https://www.npmjs.com/package/csv-parser
Sangat mudah digunakan:
sumber
Saya menggunakan
csv-parse
tetapi untuk file yang lebih besar mengalami masalah kinerja, salah satu perpustakaan terbaik yang saya temukan adalah Papa Parse , dokumen bagus, dukungan bagus, ringan, tidak ada ketergantungan.Install
papaparse
Pemakaian:
Catatan
header: true
adalah opsi pada konfigurasi, lihat dokumen untuk opsi lainnyasumber
sumber
Anda dapat mengonversi csv ke format json menggunakan modul csv-to-json dan kemudian Anda dapat dengan mudah menggunakan file json di program Anda
sumber
npm install csv
Contoh file CSV Anda akan memerlukan file CSV untuk diurai, jadi Anda sudah memilikinya, atau Anda dapat menyalin teks di bawah ini dan menempelkannya ke file baru dan menamainya "mycsv.csv"
Contoh Kode Membaca dan Mengurai file CSV
Buat file baru, dan masukkan kode berikut ke dalamnya. Pastikan untuk membaca apa yang terjadi di balik layar.
Mulai Aplikasi Anda dan Verifikasi Fungsionalitas Buka konsol dan ketik Perintah berikut:
Aplikasi node 1 Aplikasi node Anda akan melihat output berikut di konsol Anda:
1 [MYCSV {Fieldone: 'ABC', Fieldtwo: '123', Fieldthree: 'Fudge'}, 2 MYCSV {Fieldone: '532', Fieldtwo: 'CWE', Fieldthree: 'ICECREAM'}, 3 MYCSV {Fieldone: '8023', Fieldtwo: 'POOP', Fieldthree: 'DOGS'}, 4 MYCSV {Fieldone: '441', Fieldtwo: 'CHEESE', Fieldthree: 'CARMEL'}, 5 MYCSV {Fieldone: '221', Fieldtwo: 'ABC', Fieldthree: 'HOUSE'},] Sekarang Anda harus membuka browser web dan menavigasi ke server Anda. Anda harus melihatnya mengeluarkan data dalam format JSON.
Kesimpulan Menggunakan node.js dan modul CSV-nya, kita dapat dengan cepat dan mudah membaca dan menggunakan data yang disimpan di server dan membuatnya tersedia untuk klien berdasarkan permintaan
sumber