如何用Python获取BigQuery中Update、Delete等DML语句的执行结果?
如何读取BigQuery DML(Delete/Update)语句的执行结果
BigQuery的DELETE、UPDATE这类DML语句不会返回传统的结果集,无法通过client.query(...).result()直接获取数据,但可以通过查询作业的统计信息获取执行详情,比如受影响的行数。
具体实现步骤
- 执行DML语句时,保留返回的Job对象
- 等待作业执行完成(通过
job.result()) - 从Job对象的
statistics属性中提取DML执行信息
代码示例
from google.cloud import bigquery client = bigquery.Client() # 替换为你的DML语句 dml_query = """ DELETE FROM `your-project.your_dataset.your_table` WHERE expired = TRUE """ # 执行查询并获取Job实例 job = client.query(dml_query) # 等待作业完成 job.result() # 提取执行结果 query_stats = job.statistics.get('query') if query_stats: print(f"DML语句类型: {query_stats['statementType']}") print(f"受影响的行数: {query_stats.get('numDmlAffectedRows')}") # 还可以获取其他统计信息,比如处理的字节数 print(f"处理字节数: {query_stats.get('totalBytesProcessed')}")
注意事项
numDmlAffectedRows字段会返回DML实际修改/删除的行数,和BigQuery控制台显示的结果一致- INSERT、MERGE等其他DML类型也可以用同样方式获取执行统计
- 如果作业执行失败,
job.result()会抛出异常,建议添加异常处理逻辑
内容的提问来源于stack exchange,提问作者Alexandru R
相关产品推荐
相关产品推荐

