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