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

Posted

技术标签:

【中文标题】Node-Redshift 是不是支持复制命令(查询)将数据从 S3 加载到 Redshift?【英文标题】:Does Node-Redshift supports Copy command (query) to load data from S3 to Redshift?Node-Redshift 是否支持复制命令(查询)将数据从 S3 加载到 Redshift? 【发布时间】:2019-08-02 18:58:56 【问题描述】:

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

【问题讨论】:

我下面的回复有用吗?如果是这样,请接受它,以便其他人也会发现它有用 【参考方案1】:

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,不过思路是一样的。

【讨论】:

谢谢,我想通了,但是官方客户端(AWS 提供)不支持对 redshift 执行特定查询。

以上是关于Node-Redshift 是不是支持复制命令(查询)将数据从 S3 加载到 Redshift?的主要内容,如果未能解决你的问题,请参考以下文章

大数据开发-HDFS Shell命令

怎么查,文章是否在网上抄袭的?

mysql新建权限受控制的用户:支持正常增删改查及文件导出命令mysqldump

js实现网页内自定义粘贴板

redis通过命令传参以及主从复制

Centos Xrdp 远程桌面