3

考慮以下幾點:如何將記錄格式化爲AWS Kinesis Firehose到Redshift?

  • 在紅移的表稱爲「人」有場ID,姓名和年齡
  • 稱爲「人」被配置爲寫「人」表室壁運動流水流並且'Redshift table columns'的值是'id,name,age'

不清楚如何格式化'Data'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

答案在這裏:

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); 
}); 
2

您也可以,只要直接發送JSON你正確地逃避的東西,並使用正確的COPY選項。請參閱COPY FROM JSONJSON AS。如果你爲JSON AS使用'auto'選項,那麼它非常靈活。如果您在一個putRecordBatch中發送多個字典,請勿將它們與空格或換行符分開,您可以發送

{ key1: "value1", key2: 34 }{ key1: "value2", key2: 45 } 
相關問題