我正在尝试将多行数据批处理到Redshift INSERT
查询中。为了保持效率,我想知道在开始新批次之前可以走的最大长度。如果有更好的方法可以进行此操作,请告诉我。
编辑:我有点模糊。我正在尝试从Elasticsearch转到Redshift。这会导致我将JSON格式转换为:INSERT INTO xxxx VALUES (a1, a2, a3), (b1, b2, b3), (c1, c2, c3)
答案 0 :(得分:1)
Redshift语句的最大长度为16MB。 请参阅 https://docs.aws.amazon.com/redshift/latest/dg/c_redshift-sql.html
如果需要定期加载大量数据,首先将数据移至S3的速度要快得多,然后使用Redshift COPY命令。
答案 1 :(得分:1)
最佳加载数据的方式是使用firebase.database().ref('msgs').orderByChild('g_id').equalTo(gID)
once("value", function(snapshot) {
snapshot.forEach(function(child) {
child.ref.update({ dBy: [user_id] });
});
});
语句从Amazon S3加载。这允许所有节点并行参与负载,这是最有效的方法。
如果您的应用程序生成的小批量数据不需要COPY
,那么建议您 Use a Multi-Row Insert 。。
没有关于插入多少行的具体建议,但是越多越好(因为它导致更少的批次)。
如果数据已经在另一个Amazon Redshift表中,则可以Use a Bulk Insert 从一个表中选择并插入到另一个表中。
请参阅:Amazon Redshift Best Practices for Loading Data - Amazon Redshift