【问题标题】:Automate BigQuery schema/table creation from csv file using Python使用 Python 从 csv 文件自动创建 BigQuery 架构/表
【发布时间】:2020-08-14 16:33:47
【问题描述】:

我想从包含 csv 文件的桌面文件夹自动创建 BQ 表(即自动创建架构并加载到新表)

如果下次加载相同的文件,只需更新现有表,如果加载了新文件,则创建一个新表。是否可以使用 Python 实现自动化?

当前代码:

 import pandas as pd
 from google.cloud import bigquery 
 def bqDataLoad(event, context): 
  bucketName = event['test_vs'] 
  blobName = event['gf-dev-models'] 
  fileName = "gs://" + bucketName + "/" + blobName 
  bigqueryClient = bigquery.Client() 
  tableRef = bigqueryClient.dataset("gf-dev-models-204097").table("test_vs") 
  dataFrame = pd.read_csv(fileName) bigqueryJob = bigqueryClient.load_table_from_dataframe(dataFrame, tableRef) bigqueryJob.result()
#Project id = gf-dev-models
#dataset = gf-dev-models-204097 
#table name = want a new table created 

【问题讨论】:

  • @Soumendra Mishra - 如果我在 BigQuery 中没有现有表,如何在此代码中传递凭据以及如何自动创建架构?

标签: python google-bigquery


【解决方案1】:

这是我在评论部分针对您的问题的回答:

代码中的凭据: 您可以创建具有所需 BigQuery 角色的服务帐号并下载 JSON 密钥文件(例如:data-lab.json)。

import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = "data-lab.json"

自动创建架构并将数据加载到 BigQuery:

from google.cloud import bigquery

bigqueryClient = bigquery.Client()
jobConfig = bigquery.LoadJobConfig()
jobConfig.skip_leading_rows = 1
jobConfig.source_format = bigquery.SourceFormat.CSV
jobConfig.write_disposition = bigquery.WriteDisposition.WRITE_APPEND   
jobConfig.autodetect=True

datasetName = "dataset-name"
targetTable = "table-name"
uri = "gs://bucket-name/file-name.csv"
tableRef = bigqueryClient.dataset(datasetName).table(targetTable)
bigqueryJob = bigqueryClient.load_table_from_uri(uri, tableRef, job_config=jobConfig)
bigqueryJob.result()

【讨论】:

  • 完美。像魅力一样工作
猜你喜欢
  • 2021-08-08
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多