将 BigQuery 表导出到 Google Storage 时如何避免标头
Posted
技术标签:
【中文标题】将 BigQuery 表导出到 Google Storage 时如何避免标头【英文标题】:How to avoid header while exporting BigQuery table in to Google Storage 【发布时间】:2019-05-16 05:06:48 【问题描述】:我开发了以下代码,有助于将 BigQuery 表导出到 Google 存储桶。我想将文件合并到没有标题的单个文件中,以便下一个进程将使用文件而没有任何问题。
def export_bq_table_to_gcs(self, table_name):
client = bigquery.Client(project=project_name)
print("Exporting table ".format(table_name))
dataset_ref = client.dataset(dataset_name,
project=project_name)
dataset = bigquery.Dataset(dataset_ref)
table_ref = dataset.table(table_name)
size_bytes = client.get_table(table_ref).num_bytes
# For tables bigger than 1GB uses Google auto split, otherwise export is forced in a single file.
if size_bytes > 10 ** 9:
destination_uris = [
'gs:///*.csv'.format(bucket_name,
f'table_name_temp', uid)]
else:
destination_uris = [
'gs:///.csv'.format(bucket_name,
f'table_name_temp', uid)]
extract_job = client.extract_table(table_ref, destination_uris) # API request
result = extract_job.result() # Waits for job to complete.
if result.state != 'DONE' or result.errors:
raise Exception('Failed extract job for table '.format(result.job_id, table_name))
else:
print('BQ table(s) export completed successfully')
storage_client = storage.Client(project=gs_project_name)
bucket = storage_client.get_bucket(gs_bucket_name)
blob_list = bucket.list_blobs(prefix=f'table_name_temp')
print('Merging shard files into single file')
bucket.blob(f'table_name.csv').compose(blob_list)
你能帮我找到跳过标题的方法吗?
谢谢,
拉古纳特。
【问题讨论】:
【参考方案1】:我们可以通过使用 jobConfig 将 print_header 参数设置为 False 来避免 header。示例代码
job_config = bigquery.job.ExtractJobConfig(print_header=False)
extract_job = client.extract_table(table_ref, destination_uris,
job_config=job_config)
谢谢
【讨论】:
【参考方案2】:您可以使用skipLeadingRows
(https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#externalDataConfiguration.googleSheetsOptions.skipLeadingRows)
【讨论】:
我正在导出 BQ 表,我猜你共享选项可在将 CSV 导入 BQ 表时使用。如果我误解了,请告诉我以上是关于将 BigQuery 表导出到 Google Storage 时如何避免标头的主要内容,如果未能解决你的问题,请参考以下文章
将 BigQuery 表的并发导出扩展到 Google Cloud Storage
将表从 google bigquery 导出到 google 存储
无法将表从 BigQuery 导出到 Google Cloud Storage
将 10 个数据集(每个数据集有 80 个表)从 bigquery 导出到 google 存储的有效方法?