node.js csv import 하고 다루기

2023년 09월 25일

node를 사용하다보면 종종 csv를 다룰 일이 생긴다. 그럴 때 사용할 수 있는 코드를 정리해본다.

1. csv 파일을 읽어오기

const fs = require("fs");
const path = require("path");

const csvPath = path.join(__dirname, "data.csv");

const csv = fs.readFileSync(csvPath, "utf8");
  1. 필요한 라이브러리(모듈)을 import 한다

    fs, path 라이브러리를 사용한다.

  2. 파일의 path 값을 저장한다.

    __dirname : node에서 내장으로 정의된 변수, 현재 프로젝트의 path를 반환한다.

    path.join(__dirname, "data.csv") : 파일의 path와 파일의 이름을 결합해 path를 완성한다.

  3. fs.readFileSync 로 파일의 데이터를 읽어온다.

    fs.readFileSync(csvPath, "utf8") : 위에서 지정한 path와 인코딩 형식을 담아 파일을 읽어온다.

    이렇게 읽어온 데이터는 string으로 저장된다.

    그래서 이 string을 직접 분리해 원하는 형태로 가공한 후 사용하면 된다.

2. string을 2차원 array로 변환하기

const rows = csv.split("\r\n");

let result = [];
for (const row of rows) {
  const splited = row.split(",");
  result.push(splited);
}

csv 처럼 table형태로 된 데이터라면, 2차원의 array로 변환 후 사용하는 것이 편리하다.

  1. 먼저 행 기준으로 string 분리해준다.

const rows = csv.split("\r\n");

2)다시 한 행 안에서는 , 를 기준으로 배열로 쪼개주고, 최종 배열인 result에 push 해준다.

let result = [];
for (const row of rows) {
  const splited = row.split(",");
  result.push(splited);
}

3. csv 데이터 사용하기

그럼 아래 처럼 데이터가 정리된다.

[
	[A1, A2, A3, A4]
	[B1, B2, B3, B4]
	[C1, C2, C3, C4]
	[D1, D2, D3, D4]
]

result[0][1] 이런식으로 데이터를 다룰 수 있다.

원하는 특별한 형태가 있을 경우 처음 split할 때 다른 방식으로 변환해도 된다.


TAGS
JAVASCRIPTNODE.JS