-1

我正在使用 python 客户端库将数据插入到大查询表中。代码如下。

client = bigquery.Client(project_id)
errors = client.insert_rows_json(table=tablename,json_rows=data_to_insert)
assert errors == []

没有错误,但数据也没有被插入。

示例 JSON 行:

[{'a':'b','c':'d'},{'a':'f','q':'r'},.....}]

有什么问题?也不例外

4

3 回答 3

1

可能有两种情况:

  1. 您的数据与架构不匹配
  2. 您的表是新创建的,但更新尚不可用

参考:

于 2019-05-27T10:31:58.793 回答
1

client.insert_rows_json方法使用StreamingInsert。使用将数据插入 BigQueryStreamingInsert会导致 BigQuery 控制台上的表预览出现延迟。
数据不会立即出现。因此,您需要查询它们以确认插入的数据。

于 2019-05-27T15:05:18.040 回答
0

得到了我的问题的答案。问题是我又插入了一个数据不存在的列数据。我发现了一个 hack 来确定数据是否没有插入到 bigquery 表中。

  1. 将数据更改为以换行符分隔的 json,其中键作为列名,值作为该特定列所需的值。
  2. bq --location=US load --source_format=NEWLINE_DELIMITED_JSON dataset.tablename newline_delimited_json_file.json. 在您的终端中运行此命令,看看是否会引发任何错误。如果它引发错误,则可能是您的数据/表架构有问题。
  3. 根据错误更改数据/表模式,然后通过 python 重试插入相同的模式。

如果 python API 在终端上抛出错误/异常会更好,这会很有帮助。

于 2019-06-07T16:00:13.147 回答