Python连接BigQuery:OAuth2.0认证完成后的后续操作指引
基于现有OAuth认证实现BigQuery数据操作
你已经完成了OAuth 2.0身份认证,接下来可以通过google.cloud.bigquery官方SDK快速实现表数据的读取、加载、删除和更新操作,步骤如下:
1. 创建BigQuery客户端
基于已有的creds对象初始化客户端,这是所有操作的基础:
# 替换为你的GCP项目ID,若client文件包含项目信息可省略project参数 client = bigquery.Client(credentials=creds, project="你的GCP项目ID")
2. 读取表数据
提供两种常用读取方式:
方式一:执行SQL查询
query = """ SELECT * FROM `你的项目ID.数据集ID.目标表名` LIMIT 100 """ query_job = client.query(query) results = query_job.result() # 遍历输出结果 for row in results: print(row)
方式二:直接读取表并转为DataFrame
# 获取目标表对象 table = client.get_table("你的项目ID.数据集ID.目标表名") # 读取表数据(限制100行) rows = client.list_rows(table, max_results=100) # 转为DataFrame(需提前安装pandas) import pandas as pd df = rows.to_dataframe() print(df.head())
3. 加载数据到表
以加载DataFrame为例,支持追加/覆盖等写入模式:
import pandas as pd # 示例数据,需与目标表结构匹配 sample_data = [("张三", 25), ("李四", 30)] df = pd.DataFrame(sample_data, columns=["name", "age"]) # 配置加载任务 load_job = client.load_table_from_dataframe( df, "你的项目ID.数据集ID.目标表名", job_config=bigquery.LoadJobConfig( write_disposition="WRITE_APPEND" # 可选:WRITE_TRUNCATE(覆盖)、WRITE_EMPTY(仅空表写入) ) ) load_job.result() # 等待加载完成 print(f"成功加载{load_job.output_rows}行数据")
4. 删除表数据
BigQuery通过SQL DELETE语句实现数据删除:
delete_query = """ DELETE FROM `你的项目ID.数据集ID.目标表名` WHERE age > 28 """ delete_job = client.query(delete_query) delete_job.result() print(f"成功删除{delete_job.num_dml_affected_rows}行数据")
5. 更新表数据
通过SQL UPDATE语句实现数据更新:
update_query = """ UPDATE `你的项目ID.数据集ID.目标表名` SET age = age + 1 WHERE name = '张三' """ update_job = client.query(update_query) update_job.result() print(f"成功更新{update_job.num_dml_affected_rows}行数据")
注意事项
- 确保你的OAuth账号拥有对应权限(如
BigQuery Data Editor),否则会触发权限错误。 - DML操作(DELETE/UPDATE)会产生费用且不可撤销,执行前请确认条件准确性。
- 若需加载本地文件(CSV/JSON等),可使用
client.load_table_from_file方法,配合LoadJobConfig指定文件格式。
内容的提问来源于stack exchange,提问作者silentninja89
相关产品推荐
相关产品推荐

