6

考虑以下:

  • Redshift 中名为“people”的表,包含字段 id、name 和 age
  • 一个名为“people”的 kinesis firehose 流,配置为写入“people”表,“Redshift table columns”的值为“id,name,age”

目前尚不清楚如何格式化“数据”blob。以下是使用制表符分隔数据的代码示例:

let AWS = require('aws-sdk');
let firehose = new AWS.Firehose();
let params = {
  DeliveryStreamName: 'people',
  // id,name,age
  Records: [{Data: '4ccf6d3a-acdf-11e5-ad54-28cfe91fa8f1\tBob\tSmith'}]
};
firehose.putRecordBatch(params, (err, result) => {
  console.log(err || result);
});

以下是我检查过的一些文档:

4

2 回答 2

8

答案在这里:

http://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-format.html

字段需要是管道'|' 默认分隔。行应该用新行分隔。

更新更正的代码:

let AWS = require('aws-sdk');
let firehose = new AWS.Firehose();
let params = {
  DeliveryStreamName: 'people',
  // id,name,age
  Records: [{Data: '4ccf6d3a-acdf-11e5-ad54-28cfe91fa8f1|Bob|Smith\n'}]
};
firehose.putRecordBatch(params, (err, result) => {
  console.log(err || result);
});
于 2015-12-28T00:11:03.680 回答
3

只要您正确转义并使用正确的 COPY 选项,您也可以直接发送 JSON。请参阅从 JSON和JSON AS复制。如果您对 JSON AS 使用“自动”选项,那么它非常灵活。如果您在一个 putRecordBatch 中发送多个字典,请不要用空格或换行符分隔它们,您可以发送

{ key1: "value1", key2: 34 }{ key1: "value2", key2: 45 }
于 2016-07-07T18:59:43.493 回答