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");
-
필요한 라이브러리(모듈)을 import 한다
fs
,path
라이브러리를 사용한다. -
파일의 path 값을 저장한다.
__dirname
: node에서 내장으로 정의된 변수, 현재 프로젝트의 path를 반환한다.path.join(__dirname, "data.csv")
: 파일의 path와 파일의 이름을 결합해 path를 완성한다. -
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로 변환 후 사용하는 것이 편리하다.
- 먼저 행 기준으로 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
JAVASCRIPT
NODE.JS