python - Python & Bigquery:使用 for 循环在表中逐行查询和插入数据
问题描述
我正在尝试在 for 循环中触发查询(Google BigQuery),并在每个循环中将数据插入表中。但是,我只看到表格中的最后一行。所以我假设它正在覆盖这些值。
这是代码:
for x in proc_arr:
query = """
BEGIN
<QUERY>
SELECT * FROM <table1> WHERE procedureid = {}
INSERT INTO <table>
SELECT procedureid FROM <tmp_proc1>
UNION ALL
SELECT procedureid FROM <tmp_proc2>
;
END;
""".format(x)
我没有在这里写实际的查询,因为这不是必需的。proc_arr 有 80 个 id,它只插入第 80 个 id 的数据。任何帮助表示赞赏。谢谢!
解决方案
假设我在表 1 中有数据,并且我想按 ID 循环遍历它,然后将其插入表 2。使用上面的代码片段,我能够将表 1 中的数据插入每个 ID 的表 2。只要确保你client.query()
在循环中。
表格1:
表2(初始值):
下面的代码在循环时使用从表 1 查询的数据proc_arr
(我假设您的 ID 存储在此处),然后将其插入表 2。
from google.cloud import bigquery
def insert_data():
client = bigquery.Client()
proc_arr = ['asdf','test_value','cust_1']
for x in proc_arr:
query = """
INSERT INTO `sandbox.table2` (customer,amount_paid)
SELECT * FROM `sandbox.table1`
WHERE customer = '{}'
ORDER BY amount_paid ASC LIMIT 1
""".format(x)
query_job = client.query(query=query)
results = query_job.result()
if __name__ == "__main__":
insert_data()
表2(运行python脚本后):
推荐阅读
- javascript - toLowerCase localeCompare 在 NuxtJs VueJs 框架中不起作用
- reactjs - 渲染前 REACT fetch
- bash - 在 bash 循环参数列表中添加注释
- c# - 如何转换任务
到 JArray - php - 使用 Slim 框架上传图片时出错
- html - 下载一个excel文件HTML
- python - 从熊猫列中提取对象属性
- php - 如何在同一网页上的 HTML 表中显示来自数据库的 php 结果(在一个脚本中)
- drupal - 使用桌面应用程序克隆 Drupal 站点永远卡住
- javascript - 如何使用 ElementRef 关闭外部点击角度 4 的下拉菜单