Je veux un script python qui importe un fichier csv avec une date dans le nom de fichier dans BigQuery, tel que «xxxx_20200930.csv», avec une heure de partition. Cette fois, je l'ai créé en supposant qu'un grand nombre de fichiers csv se trouvent dans le répertoire et en dessous.
main.py
from google.cloud import bigquery
import json
import glob
client = bigquery.Client()
job_config = bigquery.LoadJobConfig(
source_format=bigquery.SourceFormat.CSV,
skip_leading_rows=1,
autodetect=True,
allow_quoted_newlines=True,
time_partitioning=bigquery.TimePartitioning()
)
path = "../some/dir/*"
files = glob.glob(path + '*')
for file_name in files:
date = file_name.split('_')[-1][0:8]
table_id = 'dataset.table_name$' + date #Spécification de la partition
with open(file_name, "rb") as source_file:
job = client.load_table_from_file(
source_file,
table_id,
job_config=job_config
)
job.result() # Waits for the job to complete.
table = client.get_table(table_id) # Make an API request.
print(
"Loaded {} rows and {} columns to {}".format(
table.num_rows, len(table.schema), table_id
)
)
Charger des données à partir d'une source de données locale (https://cloud.google.com/bigquery/docs/loading-data-local?hl=ja#loading_data_from_a_local_data_source)
Recommended Posts