Javascript membaca file csv baris demi baris

Membaca data dari sumber data sangat umum saat membangun aplikasi web. CSV adalah yang paling populer di antara banyak sumber data karena betapa mudahnya data diformat di dalamnya, membuatnya mudah untuk mengurai file-file ini

Dalam tutorial ini, kita akan melihat cara membaca konten file CSV dan kemudian mengurai kontennya untuk digunakan lebih lanjut dalam aplikasi

Kumpulan data yang akan digunakan

Untuk tutorialnya, kita membutuhkan file sampel dengan data. Saya menemukan file CSV yang berisi kota-kota di dunia. Anda dapat mengunduh file ini di tautan ini

Mari buka file sampel dan lihat apa yang ada di dalamnya

Javascript membaca file csv baris demi baris
Konten file CSV untuk dibaca

Jadi di sini, tujuan kita adalah membaca data ini dan mengonversinya menjadi objek TypeScript untuk digunakan di dalam aplikasi, seperti menyimpan di database atau mengembalikannya sebagai respons JSON

Javascript membaca file csv baris demi baris
Pemetaan antara header tabel dan tipe TypeScript

Berdasarkan gambar di bawah ini, kita akan memiliki tipe yang mirip dengan ini

type WorldCity = {
    name: string;
    country: string;
    subCountry: string;
    geoNamId: number;
};

Siapkan proyek

Inisialisasi sebuah Node. proyek js dan juga TypeScript

mkdir node-csv-read

cd node-csv-read

yarn init -y

yarn add -D typescript ts-node @types/node

yarn tsc --init

touch index.ts
_

Instal paket Node yang akan digunakan untuk membaca file bernama csv-parse

yarn add csv-parse

Di dalam file index. ts, tambahkan kode berikut

import * as fs from "fs";
import * as path from "path";
import { parse } from 'csv-parse';

type WorldCity = {
  name: string;
  country: string;
  subCountry: string;
  geoNameId: number;
};

(() => {
  const csvFilePath = path.resolve(__dirname, 'files/world-cities_csv.csv');

  const headers = ['name', 'country', 'subCountry', 'geoNameId'];

  const fileContent = fs.readFileSync(csvFilePath, { encoding: 'utf-8' });

  parse(fileContent, {
    delimiter: ',',
    columns: headers,
  }, (error, result: WorldCity[]) => {
    if (error) {
      console.error(error);
    }

    console.log("Result", result);
  });
})();

Di sini, pertama-tama kita menentukan jalur tempat file yang akan dibaca berada;

Kami membaca konten file dan menggunakan fungsi parse()_ dari csv-parse untuk mengurai string dan mengembalikan hasilnya sebagai array item dari tipe WorldCity

Kami juga menambahkan dua opsi untuk menentukan

mkdir node-csv-read

cd node-csv-read

yarn init -y

yarn add -D typescript ts-node @types/node

yarn tsc --init

touch index.ts
0 dan kolom yang memungkinkan pemetaan header CSV ke properti tipe WorldCity

Mari kita coba jalankan aplikasinya untuk melihat hasilnya

yarn ts-node index.ts

Kami mendapat output yang mirip dengan ini

Javascript membaca file csv baris demi baris
Konten file CSV diuraikan dan dicetak di konsol

Terapkan transformasi pada penguraian

Pada konten yang dicetak di keluaran, kita melihat

mkdir node-csv-read

cd node-csv-read

yarn init -y

yarn add -D typescript ts-node @types/node

yarn tsc --init

touch index.ts
1 harus berupa angka, namun itu adalah string. Kita perlu mengonversi string menjadi angka saat mem-parsing data

Csv-parse menyediakan opsi yang disebut

mkdir node-csv-read

cd node-csv-read

yarn init -y

yarn add -D typescript ts-node @types/node

yarn tsc --init

touch index.ts
2 yang memungkinkan penerapan transformasi khusus pada setiap kolom untuk setiap baris. Fungsi parse sekarang terlihat seperti ini

parse(fileContent, {
    delimiter: ',',
    columns: headers,
    fromLine: 2,
    cast: (columnValue, context) => {
      if (context.column === 'geoNameId') {
        return parseInt(columnValue, 10);
      }

      return columnValue;
    }
  }, (error, result: WorldCity[]) => {
    if (error) {
      console.error(error);
    }

    console.log("Result", result);
  });
_

Kami memeriksa apakah nama kolom adalah

mkdir node-csv-read

cd node-csv-read

yarn init -y

yarn add -D typescript ts-node @types/node

yarn tsc --init

touch index.ts
1 dan mengurai nilainya menjadi angka;

Kami menambahkan opsi baru yang disebut

mkdir node-csv-read

cd node-csv-read

yarn init -y

yarn add -D typescript ts-node @types/node

yarn tsc --init

touch index.ts
_4 yang mengecualikan Header CSV dari data untuk diuraikan. Jalankan kodenya dan lihat hasilnya

Javascript membaca file csv baris demi baris
Data diuraikan dengan jenis yang benar

Nomor tersebut sekarang diuraikan seperti yang diharapkan

Ambil baris tertentu dalam data CSV

Katakanlah kita ingin mengambil kota dari Prancis saja. Bagaimana kita bisa melakukan itu? . Fungsi  parse sekarang terlihat seperti ini

parse(fileContent, {
    delimiter: ',',
    columns: headers,
    fromLine: 2,
    cast: (columnValue, context) => {
      if (context.column === 'geoNameId') {
        return parseInt(columnValue, 10);
      }

      return columnValue;
    },
    on_record: (line, context) => {
      if (line.country !== 'France') {
        return;
      }

      return line;
    },
  }, (error, result: WorldCity[]) => {
    if (error) {
      console.error(error);
    }

    console.log("Result", result);
  });

Jalankan kodenya dan lihat hasilnya

Javascript membaca file csv baris demi baris
Garis difilter untuk hanya menampilkan kota di Prancis

Kita bisa melihat jumlah item yang diambil turun drastis

Bungkus

Kami melihat cara membaca file CSV menggunakan pustaka csv-parse, yang menyediakan banyak opsi yang memberi kami lebih banyak fleksibilitas dalam cara kami mengurai file. csv-parse memiliki banyak opsi lain dan jika Anda ingin mempelajarinya lebih lanjut, lihat tautan ini

Anda dapat menemukan sumber kode di repositori GitHub

Ikuti saya di Twitter atau berlangganan buletin saya untuk tidak ketinggalan posting mendatang dan tip dan trik yang saya bagikan setiap minggu

Bagaimana cara membaca file CSV dalam JavaScript baris demi baris?

File CSV menggunakan JavaScript. Untuk mengonversi atau mengurai data CSV menjadi array, kita membutuhkan kelas FileReader JavaScript, yang berisi metode bernama readAsText() yang akan membaca konten file CSV dan mengurai hasilnya sebagai teks string. Jika kita memiliki string, kita dapat membuat fungsi khusus untuk mengubah string menjadi array

Bagaimana cara membaca file CSV baris demi baris di NodeJS?

Anda akan menggunakan metode createReadStream() modul fs untuk membaca data dari file CSV dan membuat streaming yang dapat dibaca . Anda kemudian akan menyalurkan aliran ke aliran lain yang diinisialisasi dengan modul csv-parse untuk mengurai potongan data. Setelah potongan data diuraikan, Anda dapat mencatatnya di konsol.

Bisakah JavaScript mengurai CSV?

Untuk memulai dengan contoh sederhana, Anda dapat membaca data CSV dari string JavaScript . csv. fungsi parse memiliki parameter untuk data CSV, opsi konfigurasinya sendiri, dan fungsi untuk meneruskan hasilnya.

Bagaimana cara membaca dan menulis file CSV di JavaScript?

Dalam tutorial singkat ini, Anda akan mempelajari cara menggunakan fungsionalitas dari modul fs untuk menulis file CSV dengan Node. .
Buat Proyek Node Baru. Untuk memulai, kita perlu membuat proyek Node baru. .
Impor appendFileSync Dari Modul fs. .
Terapkan Kelas Kontak. .
Tambahkan Metode saveAsCSV Ke Kelas Kontak. .
Buat Data Dan Simpan Ke CSV