Node-Redshift是否支持复制命令(查询)以将数据从S3加载到Redshift?

时间:2019-08-02 18:58:56

标签: node.js amazon-s3 amazon-redshift etl

我想知道“ Node-redshift”模块是否支持“复制自”查询,以便从S3存储桶中获取批量数据并将其加载到Redshift中? 如果没有,我可以使用哪些其他选项连接到Redshift并使用“复制”命令。

1 个答案:

答案 0 :(得分:2)

node-redshift只是一个基本的javascript客户端,它将执行您提供的查询/语句/ DML。

要执行复制命令,您需要初始化客户端并执行命令:

var copyCommand = "copy DESTINATION_TABLE_NAME 
                   from 's3://BUCKET_NAME/SOME_PREFIX/' 
                   credentials
                   access_key_id 'AKIA...'
                   secret_access_key 'secret...';"

var Redshift = require('node-redshift');

var client = {
  user: user,
  database: database,
  password: password,
  port: port,
  host: host,
};

var redshiftClient = new Redshift(client, [options]);

redshiftClient.connect(function(err){
  if(err) throw err;
  else{
    redshiftClient.query(copyCommand, [options], function(err, data){
      if(err) throw err;
      else{
        console.log(data);
        redshiftClient.close();
      }
    });
  }
});

存储桶中存储的文件有几种受支持的格式,例如CSV和PARQUET。 请参阅复制命令文档:https://docs.aws.amazon.com/redshift/latest/dg/t_loading-tables-from-s3.html

摘录摘自官方的redshift-node页面https://www.npmjs.com/package/node-redshift,并针对上述问题进行了调整。

也有aws nodejs的官方客户端https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Redshift.html,但想法是相同的。