在Bigquery中为多个CSV文件自动创建表



每当使用python中的云函数将文件上传到存储桶中时,我都想在Bigquery中自动生成表。

例如,如果sample1.csv文件被上传到bucket,那么将在Bigquery中创建一个sample1表。如何使用Python使用云函数实现自动化我尝试了以下代码,但能够生成1个表,所有数据都附加到该表中,如何进行

def hello_gcs(event, context):
from google.cloud import bigquery
# Construct a BigQuery client object.
client = bigquery.Client()
# TODO(developer): Set table_id to the ID of the table to create.
table_id = "test_project.test_dataset.test_Table"
job_config = bigquery.LoadJobConfig(
autodetect=True,
skip_leading_rows=1,
# The source format defaults to CSV, so the line below is optional.
source_format=bigquery.SourceFormat.CSV,
)
uri = "gs://test_bucket/*.csv"
load_job = client.load_table_from_uri(
uri, table_id, job_config=job_config
)  # Make an API request.
load_job.result()  # Waits for the job to complete.
destination_table = client.get_table(table_id)  # Make an API request.
print("Processing file: {file['name']}.")

听起来你需要做三件事:

  1. 从您收到的通知事件中提取CSV文件/对象的名称以启动您的函数。

  2. 更新示例代码中的table_id,以根据在第一步中提取的文件名设置表名。

  3. 更新示例代码中的uri,使其仅使用单个文件作为输入。如前所述,您的示例试图将GCS中所有匹配CSV对象的数据加载到表中。

相关内容

  • 没有找到相关文章

最新更新