使用 WSO2 在 BigQuery 中插入多条记录
Posted
技术标签:
【中文标题】使用 WSO2 在 BigQuery 中插入多条记录【英文标题】:Insert Multiple records in BigQuery using WSO2 【发布时间】:2019-03-18 12:05:26 【问题描述】:我在 WSO2 中使用 BigQuery 连接器在 BigQuery 云中插入多条记录。
我关注了这个link,并且能够成功插入一条记录。
首先我尝试通过使用逗号分隔多条记录来传递它们。 但是,在这种情况下,只有第一条记录被插入,其他记录被跳过。
请注意,在这种情况下不会返回错误。
我的多条记录的 Json 消息:
"insertId":"101","json":"NAME":"Vishal_101","ADDRESS":"UK","ID":"vbordia","insertId":"102","json":"NAME":"Vishal_102","ADDRESS":"UK","ID":"vbordia"
第二我试过这个link,它解释了如何建立多个记录。 但是,这一次我收到了 BigQuery 的无效响应。由于响应消息没有很好的解释,我无法理解原因。-
消息:
"rows":
[
"insertId":"209",
"json":
"NAME": "NewRow1",
"ADDRESS": "NewAddr",
"ID": "123"
,
"insertId":"210",
"json":
"NAME": "NewRow2",
"ADDRESS": "NewAddr",
"ID": "123"
]
BigQuery 返回的错误消息:
"insertErrors": [
"index": 0,
"errors": [
"reason": "invalid",
"location": "",
"debugInfo": "",
"message": ""
]
]
任何人都可以在这里帮助我。通过 Wso2 在 BigQuery 中插入多条记录的正确方法是什么。 提前致谢。
【问题讨论】:
从第二个link运行insertAll时是否出现第二个错误? 是的塔米尔。我已经尝试了许多其他插入方式,但没有任何效果。由于 BigQuery 没有返回错误消息,我无法找到问题所在。 【参考方案1】:这是 WSO2 Bigquery 连接器中的一个错误。我们已经向 WSO2 提出了建议,他们现在发布了能够插入多条记录的新版本连接器。您可以在 WSO2 市场找到最新版本。
【讨论】:
【参考方案2】:根据您的数据,我在项目中创建了一个测试表
并使用API 上传您的示例数据,如下所示:
curl --request POST \
'https://www.googleapis.com/bigquery/v2/projects/myproject/datasets/dataset/tables/testInsert/insertAll' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '"rows":["insertId":"z1","json":"NAME":"Vishal_z1","ADDRESS":"UK","ID":"vbordia","insertId":"z2","json":"NAME":"Vishal_z2","ADDRESS":"UK","ID":"vbordia1"]' \
--compressed
使用这个SELECT
:
SELECT * FROM `project.dataset.testInsert` LIMIT 1000
我确认数据在表格中:
【讨论】:
感谢 Tamir 的快速回复。我无权将数据直接插入 BigQuery 控制台,我认为您插入的方式是直接使用 BigQuery API,但我正在尝试找到一种使用 ESB 工具 WSO2 插入行的方法。如果您对此有任何想法,请建议我。 下面是通过 WSO2 工具尝试插入成功的单条记录。 "insertId":"101","json":"NAME":"Vishal_101","ADDRESS":"UK","ID":"vbordia" 但我无法插入多行并且没有想法如何为多行创建 json 消息。 不幸的是,我不熟悉 WSO2,也许其他人可以在这方面提供帮助,但我可以向您保证裸 API 支持多个插入。我可能建议的一种解决方法是在 WSO2 中创建一个外部循环,假设这是可能的,并在您确认单个插入正在工作时逐行流式传输数据 谢谢塔米尔。我将尝试您建议的解决方法。但是必须有一种方法可以在单个查询中传递多行。请问有人在 WSO2 中遇到过这个问题吗?以上是关于使用 WSO2 在 BigQuery 中插入多条记录的主要内容,如果未能解决你的问题,请参考以下文章
如何安全地为 bigquery 节点插入转义用户输入?可以在 bigquery.insert 节点库上使用参数化查询吗?