python - BigQuery python 插入记录 (\w client.insert_rows)

标签 python google-cloud-platform insert google-bigquery

我目前正在尝试将一行插入到 BQ 数据集中。

我想为此使用 Client.insert_row() 函数 documentation

对于没有任何“记录”类型字段的简单模式,我已启动并运行所有内容。 但是,当我将“记录”类型的字段添加到我的模式时,我不知道如何在 insert_row() 函数中定义它

我的架构: Schema in BQ

我的代码:

client = bigquery.Client(
    credentials=credentials,
    project=credentials.project_id,
)

dataset_ref = client.dataset('channel_data')

table_ref = dataset_ref.table('test')
table = client.get_table(table_ref)  # API call

rows_to_insert = [{"test1":"a","test2":"b","test3":"c","record":{"1":"d","2":"e"}},]

errors = client.insert_rows_json(table, rows_to_insert)  # API request
assert errors == []

我为 _to_insert 行尝试了许多不同的版本:

rows_to_insert = [{"test1":"a","test2":"b","test3":"c","record":["d","e"]},]
rows_to_insert = [{"test1":"a","test2":"b","test3":"c","record.1":"d","record.2":"e"}},]

它们似乎都不起作用,而且我无法在网上找到任何有关如何执行此操作的信息。 以前有人做过吗?

将其作为 JSON 插入很重要,因为有时会丢失一些值。 我知道您可以将所有内容放入列表中并像这样传输

rows_to_insert = [("a", "b", "c", ["d", "e"])]

但这不是我的选择!

最佳答案

正确的插入方式如下:

rows_to_insert = [{"test1":"a","test2":"b","test3":"c","record":{"r1":"d","r2":"e"}}]

记录字段本身有一个字典作为条目,其中特定字段作为键/值!

关于python - BigQuery python 插入记录 (\w client.insert_rows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60829121/

相关文章:

google-cloud-platform - 计算一次 GroupBy,然后将其传递给 Google DataFlow (Python SDK) 中的多个转换

python - 导入错误 : cannot import name _args_from_interpreter_flags

sql - 重复使用插入的 ID

php - 如何将带逗号的字符串插入MYSQL

python - 卸载通过 cx_freeze bdist_msi 创建的先前安装的 msi

python - DataNitro 自动格式化日期

r - 在 RStudio 中访问来自 Google 云存储的文件

sql - 如何在 HSQL 中返回最后插入(自动递增)的行 ID?

python - 如何计算 Pandas 数据框中单元格的项目数(或长度)?

python - 没有初始数据的 Django 表单集