【nodejs】一個CSV中的数据读取样例,并将其注册到DynamoDB中

你想做什么?

当手头有以列表形式存在的数据需要注册到DynamoDB时,我需要读取该列表并向DynamoDB发送PUT请求,因此我编写了这个脚本作为备忘录。由于它不是一个繁重的处理,我选择在AWS Lambda上运行它。

请留意

因为为了单次使用而很麻烦,所以我也将CSV文件和ZIP文件一起打包了。

使用模块

    • aws-sdk

 

    comma-separated-values

实施


'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();
                    }
                }
            });
        }
    });
};

使用列表

column_1,column_2,column_3
hoge,fuga,fugaga

假设您预计的样式是带有这种类型的标题的CSV。

最后

如果你需要多次使用的话,我认为将数据存储在S3中并从那里获取会更好。