Bigquery插入 - 从python dict一次多行

时间:2015-09-21 22:49:30

标签: google-bigquery

如何将带有5k行的python字典插入bigquery?我使用https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/bigquery/api/streaming.py处的文档,但我一次只能插入一行。

如何一次在字典中插入所有5k行?如果我使用pandas数据帧插入,我会收到错误NotImplementedError: Google's libraries do not support Python 3 yet

这是我的代码:

for rows in dict1:
    insert_all_data = {
                       'rows': [{'json' : rows}]
                       }
    bigquery_service.tabledata().insertAll(projectId='na-sem',datasetId='Rules',tableId='my_table',body=insert_all_data).execute(num_retries=2)

Pandas数据框方法

bigquery_results_df.to_gbq('samples.test', project_id='sample', chunksize=10000, verbose=True, reauth=False)

返回错误:

  

NotImplementedError:Google的库尚不支持Python 3。

1 个答案:

答案 0 :(得分:1)

在我们为非技术人员提供的自助服务环境中,我们主要采用以下两种方式之一来解决这个问题。当然 - 它与你的情况有多相关 - 取决于:)

  1. 如果词典是静态的并且事先可用,我们会将其上传到存储,然后加载到bigquery - 这是经典场景

  2. 如果字典是动态的并且实际上是在应用程序中自动创建的(自助服务环境) - 我们正在构建“假”查询,其中包含尽可能多的select语句,其中包含bigquery大小允许的二进制数据,而不是执行查询作业目的地选择表

  3. 如下简化:

    SELECT id, itemA, itemB FROM
      (SELECT 1 as id, 'a1' as itemA, 'b1' as itemB),
      (SELECT 2 as id, 'a2' as itemA, 'b2' as itemB),
      (SELECT 3 as id, 'a3' as itemA, 'b3' as itemB)