TypeScript+大量CSVと格闘したお話

2884 ワード

なぜあんな格闘したんだろう

みなさんどうも、jey_desunですん
今日はTypeScriptで大量のCSVを捌くのにすげー格闘したお話をお届けします。

事の発端

長年サービスを開発/運用していると、どうしてもみたいなことが出てくる事、よくありますよね。
今回は、百万行あるCSVを1行ずつ加工して、データベースに保存しなければいけなくなったというお話です。

読み込み

まぁ、読み込むのはちゃちゃっとテキトーにできました
↓ちょっと適当ですけどこんな感じ

import {GetObjectCommand, S3Client} from '@aws-sdk/client-s3'

const s3 = new S3Client({
    region: 'ap-northeast-1'
});

const result = await s3.send(
    new GetObjectCommand({
        Bucket: 'Bucket',
        Key: 'Key'
    })
);

const stream   = result.Body as Readable;

※aws-sdkのv3