node - csv

const fs = require("fs")
const { parse } = require("csv-parse/sync")
const stringifySync = require("csv-stringify/sync")

// 入力CSV
// Header 1,Header 2,Header 3
// Row 1 - Col 1,Row 1 - Col 2,Row 1 - Col 3
// Row 2 - Col 1,Row 2 - Col 2,Row 2 - Col 3
// Row 3  -Col 1,Row 3 - Col 2,"\"hello world!\""

//-------- csv read
let data = fs.readFileSync("data.csv")
let rows = parse(data, { escape: "\\" })

console.log(">> all check")
console.log(rows)

console.log(">> one check")
rows.forEach((row) => {
  row.forEach((column) => {
    console.log(column)
  })
})

// >> all check
// [
//   [ 'Header 1', 'Header 2', 'Header 3' ],
//   [ 'Row 1 - Col 1', 'Row 1 - Col 2', 'Row 1 - Col 3' ],
//   [ 'Row 2 - Col 1', 'Row 2 - Col 2', 'Row 2 - Col 3' ],
//   [ 'Row 3  -Col 1', 'Row 3 - Col 2', '"hello world!"' ]
// ]
// >> one check
// Header 1
// Header 2
// Header 3
// Row 1 - Col 1
// Row 1 - Col 2
// Row 1 - Col 3
// Row 2 - Col 1
// Row 2 - Col 2
// Row 2 - Col 3
// Row 3  -Col 1
// Row 3 - Col 2
// "hello world!"

//--------  csv write
let oututContent = ""
rows.forEach((row) => {
  oututContent += row.join(",") + "\r\n"
})
fs.writeFileSync("output.data.csv", oututContent)

// >> 出力ファイル
// Header 1,Header 2,Header 3
// Row 1 - Col 1,Row 1 - Col 2,Row 1 - Col 3
// Row 2 - Col 1,Row 2 - Col 2,Row 2 - Col 3
// Row 3  -Col 1,Row 3 - Col 2,"hello world!"