- csv-writer library를 사용하기
👍 파일에 쓰기를 할 때, header를 옵션
으로 넣어서 처리할 수 있다.
👍 각각의 value를 따로 string화 할 필요가 없다.
👎 하나의 파일 안에 들어갈 데이터가 많아지면 짤려서 들어간다.
- txt파일에 csv형태로 넣어주기
👍 어지간한 용량은 다 커버
가 가능하다.
👎 csv(comma separated value) 형태로 가공해야한다.
각각의 방법이 장단점이 있지만 !!
본인의 상황에서 가장 필요한 부분이 무엇인지 판단하여 선택하면 된다.
필자의 경우, 처음에는 csv-writer를 사용했지만 용량 문제로 txt로 전환해서 사용중이다.
두가지 방법을 간단한 예제 프로젝트를 통해서 알아보자.
예시 데이터를 얻기 위해서 fake.js를 이용했다.
import faker from 'faker';
header 설정
const txtHeader = ['name', 'gender', 'job', 'country', 'city'];
const csvWriterHeader = txtHeader.map((el) => {
return { id: el, title: el };
});
데이터 가공
// User type
interface User {
name: string;
gender: string;
job: string;
country: string;
city: string;
}
let result: User[] = [];
for (let i = 0; i < 20; i++) {
let data: User = {
name: faker.name.firstName(),
gender: faker.name.gender(),
job: faker.name.jobTitle(),
country: faker.address.country(),
city: faker.address.cityName(),
};
result.push(data);
}
파일 쓰기
const createCsvWirter = require('csv-writer').createObjectCsvWriter;
const csvWriter = createCsvWirter({
path: './csv-writer.csv',
header: csvWriterHeader,
});
csvWriter.writeRecords(result).then(() => {
console.log('done!');
});
header 설정
const txtHeader = 'name,gender,job,country,city\n'
데이터 가공
let result = txtHeader;
for (let i = 0; i < 20; i++) {
let data: User = {
name: faker.name.firstName(),
gender: faker.name.gender(),
job: faker.name.jobTitle(),
country: faker.address.country(),
city: faker.address.cityName(),
};
let stringified = Object.values(data).join(',') + '\n';
result += stringified;
}
let result = txtHeader.join(',') + '\n';
for (let i = 0; i < 20; i++) {
result += `${faker.name.firstName()},${faker.name.gender()},${faker.name.jobTitle()},${faker.address.country()},${faker.address.cityName()}\n`;
}
파일 쓰기
import fs from 'fs';
fs.writeFileSync('./csv-txt.txt', result, { encoding: 'utf-8' });
가장 중요한 부분은 csv파일은 결국 string형태의 value들이 comma(,)로 구분되어 있는 형식의 파일이라는 것이다.
최종 파일의 특성, 코드의 가독성 등등을 잘 따져서 본인의 상황에 맞게 잘 사용하면 좋을 것 같다.