使用 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 中插入多条记录的主要内容,如果未能解决你的问题,请参考以下文章

使用控制台将多条 JSON 记录加载到 BigQuery

如何在 BigQuery 中获取文件加载插入失败的插入记录

使用while循环在表中插入多条记录[关闭]

如何安全地为 bigquery 节点插入转义用户输入?可以在 bigquery.insert 节点库上使用参数化查询吗?

为什么我尝试执行WSO2 DSS插入查询时获得“不支持的数据类型:TEXT作为输入参数”?

Go 库的 BigQuery 行插入失败