如何解决使用Python从CSV文件自动创建BigQuery架构/表
我想从包含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
解决方法
这是我在评论部分中关于您的问题的答案:
代码凭据: 您可以创建一个具有所需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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。