見出し画像

#6 JavascriptオブジェクトをCSVに変換する

 DynamoDBからデータ取得し、CSVファイル化してS3に置くということをしました。
 DynamoDBからのデータ取得はscanやqueryで必要なデータを抽出します。その方法については、それほど迷うことはないと思いますので、この記事では割愛します。
 今回の要件では項目名をヘッダとして1行目に記載します。順序をあとから変更しやすいようにheaderListで指定するようにしています。

// Javascriptオブジェクト
const dataList = [
  {
    item1: 'data0-item1',
    item2: 'data0-item2',
    item3: 'data0-item3',
    item4: 'data0-item4',
    item5: 'data0-item5',
  },
  {
    item1: 'data1-item1',
    item2: 'data1-item2',
    item3: 'data1-item3',
    item4: 'data1-item4',
    item5: 'data1-item5',
  },
];

// CSV文字列の格納先
let csvstr = '';
// CSVのヘッダ情報
const headerList = ['item5', 'item1', 'item3'];

// ヘッダの作成
csvstr = headerList.join();
csvstr += '\r\n';
// データの書き出し
for (const data of dataList) {
  const row = [];
  for (const head of headerList) {
    row.push(data[head]);
  }
  csvstr += row.join();
  csvstr += '\r\n';
}

 実行結果は以下のようになります。

item5,item1,item3
data0-item5,data0-item1,data0-item3
data1-item5,data1-item1,data1-item3

 csvstrに文字列として格納されているので、あとはS3にファイルとして書き出せば完了です。

const params = {
  Bucket = 'hogehoge',
  Key = 'foo.csv',
  Body = `${csvstr}`
};
const s3 = new S3Client({ region: 'ap-northeast-1'});
const command = new PutObjectCommand(param);
try {
  await s3.send(command);
} catch (e) {
  // エラー処理
}

いいなと思ったら応援しよう!

KasasagiWorks@ITエンジニア
もっと勉強しろよと後押しをお願いします。スキルアップのため、有効に活用させていただきます!