首页 > 解决方案 > 将批量数据插入大查询而不将其保存在流缓冲区中

问题描述

我的动机如下:

  1. 每半小时将批量记录插入大查询
  2. 如果存在则删除记录

这些记录是更改其状态的事务:挂起、成功、失败和过期。

BigQuery 不允许我删除半小时前插入的行,因为它们仍在流缓冲区中。

任何人都可以建议我一些解决方法,因为我的表中有一些重复的行。

标签: node.jsasync-awaitgoogle-bigquerysynchronization

解决方案


更好的做法是:

  • 对临时表执行定期加载(加载是免费操作)
  • 加载完成后,执行MERGE 语句

你会想要这样的东西:

MERGE dataset.TransactionTable dt
USING dataset.StagingTransactionTable st
ON dt.tx_id = st.tx_id
WHEN MATCHED THEN
UPDATE dt.status = st.status
WHEN NOT MATCHED THEN
INSERT (tx_id, status) VALUES (st.tx_id, st.status)

推荐阅读