BigQuery разделяет экспортируемые данные на несколько файлов, если они больше 1 ГБ .Но вы можете объединить эти файлы с помощью gsutil tool , отметьте в этой официальной документации , чтобы узнать, как выполнять компоновку объектов с помощью gsutil.
Поскольку BigQuery экспортирует файлы с помощьютот же префикс, вы можете использовать подстановочный знак *
, чтобы объединить их в один составной объект:
gsutil compose gs://example-bucket/component-obj-* gs://example-bucket/composite-object
Обратите внимание, что существует ограничение (в настоящее время 32) на количество компонентов, которыеможет быть составлен в одной операции.
Недостатком этой опции является то, что строка заголовка каждого файла .csv
будет добавлена в составной объект.Но вы можете избежать этого, изменив jobConfig
, чтобы установить print_header
параметр на False
.
Вот пример кода Python, но вы можете использовать любую другую клиентскую библиотеку BigQuery :
from google.cloud import bigquery
client = bigquery.Client()
bucket_name = 'yourBucket'
project = 'bigquery-public-data'
dataset_id = 'libraries_io'
table_id = 'dependencies'
destination_uri = 'gs://{}/{}'.format(bucket_name, 'file-*.csv')
dataset_ref = client.dataset(dataset_id, project=project)
table_ref = dataset_ref.table(table_id)
job_config = bigquery.job.ExtractJobConfig(print_header=False)
extract_job = client.extract_table(
table_ref,
destination_uri,
# Location must match that of the source table.
location='US',
job_config=job_config) # API request
extract_job.result() # Waits for job to complete.
print('Exported {}:{}.{} to {}'.format(
project, dataset_id, table_id, destination_uri))
Наконец, не забудьте составить пустой .csv
с помощью всего лишьстрока заголовков.