如何使用Nodejs流式插入BigQuery?

时间:2014-09-02 07:26:21

标签: node.js google-bigquery google-api-nodejs-client

我想将google-api-nodejs-client用于stream rowsGoogle BigQuery

深入研究source code我发现我需要一个"资源"参数。我尝试了几种组合并转到apirequest的来源,但我总是收到错误No rows present in the request.

我终于设法一次上传一行npm module,但这个模块不支持tabledata.insertAll()。

您能举例说明如何使用"资源"流插入的参数?

bigquery.tabledata.insertAll({
  auth: oauth2Client,
  'projectId': config.google.projectId,
  'datasetId': config.google.datasetId,
  'tableId': config.google.tableId,
  'resource ': {
    "kind": "bigquery#tableDataInsertAllRequest",
    "rows": [
      {
        "insertId": 123456,
        "json": '{"id": 123,"name":"test1"}'
      }
    ]
  }
}, function(err, result) {
  if (err) {
    return console.error(err);
  }
  console.log(result);
});

2 个答案:

答案 0 :(得分:3)

资源后你有一个额外的空间,你试过删除它吗?

  'resource ': {

答案 1 :(得分:2)

看起来你正在对插入的行进行额外的编码。它们应该作为原始json发送,而不是将整行编码为字符串。就是这样:

'rows': [
  {
    'insertId': 123456,
    'json': {'id': 123,'name':'test1'}
  }
]

(请注意,与上述内容的不同之处仅在于未引用{'id': 123,'name':'test1'}行。