【问题标题】:Insert Multiple records in BigQuery using WSO2使用 WSO2 在 BigQuery 中插入多条记录
【发布时间】: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 没有返回错误消息,我无法找到问题所在。

标签: google-bigquery wso2esb


【解决方案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 中遇到过这个问题吗?
    猜你喜欢
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 2016-07-14
    相关资源
    最近更新 更多