#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) {
// エラー処理
}
いいなと思ったら応援しよう!
もっと勉強しろよと後押しをお願いします。スキルアップのため、有効に活用させていただきます!