LoginSignup
3
3

More than 5 years have passed since last update.

[nodejs]CSVからデータを読み込んでDynamoDBへ登録するサンプル

Last updated at Posted at 2016-12-20

何がしたい

DynamoDBに登録するデータがリスト形式で手元にあるとき、そのリストを読み込んでDynamoDBにPUTリクエストを送りたかったからスクリプトを書いたのでメモ
重い処理でもなんでもなかったからAWS Lambdaで動かしています

注意

単発使用のためのもので面倒だったのでCSVファイルも一緒にZIP化しています。

使用モジュール

  • aws-sdk
  • comma-separated-values

実装

index.js

'use strict';

var fs = require('fs');
var CSV = require("comma-separated-values");
var aws = require('aws-sdk');
var docClient = new aws.DynamoDB.DocumentClient({region: '### region ###'});

exports.handler = function (event, context) {

    fs.readFile('./list.csv', 'utf8', function (err, data) {
        var csv = new CSV(data, {header: true}).parse();
        var len = csv.length;
        var lim = 0;
        for (var cnt = 0; cnt < len; cnt++) {

            var item = {
               column_1: String(csv[cnt].column_1),
               column_2: String(csv[cnt].column_2),
               column_3: String(csv[cnt].column_3)
            };
            var params = {
                TableName: 'items',
                Item: item
            };

            docClient.put(params, function (err, data) {
                lim++;
                if (err) {
                    console.log('[ERROR]',err);
                    if (len === lim){
                        context.succeed();
                    }
                } else {
                    console.log('[INFO]',data);
                    if(len === lim){
                        context.succeed();
                    }
                }
            });
        }
    });
};

使用するリスト

list.csv
column_1,column_2,column_3
hoge,fuga,fugaga

こんな感じのヘッダー付きCSVを想定

さいごに

何回か使うならデータ格納先はS3にして、引っ張ってくるのが良いと思う。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3