#google-bigquery
# #google-bigquery
Вопрос:
Я пытаюсь загрузить CSV-файл в BQ с помощью консоли. он имеет размер 45 Мб. Я вижу, что с помощью «загрузить» я могу загрузить только до 10 МБ. У меня нет доступа к диску и нет доступа для запуска загрузки bq из командной строки на моем локальном компьютере, поскольку в разрешении отказано.
Есть ли обходной путь для этого? Это будет большим подспорьем.Спасибо
Ответ №1:
Вы можете загрузить файл в корзину облачного хранилища Google, а затем скопировать URL-адрес хранилища «// gs:». Затем в консоли вы можете создать таблицу и выбрать источник «Облачное хранилище Google» и вставить свой URL.
Ответ №2:
Я могу загрузить файл размером более 10 МБ, следуя этому руководству
Для выполнения скрипта python вам просто нужно установить библиотеку bigquery в вашем virtualenv.
pip install google-cloud-bigquery
Если у вас еще не создан набор данных, вам просто нужно запустить команду из console cloud для создания нового набора данных.
$ bq mk pythoncsv
#Dataset 'healthy-pager-276023:pythoncsv' successfully created.
После успешного создания набора данных просто запустите скрипт python для загрузки вашего csv.
Мое окончательное решение — это скрипт python:
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.
# JUST FOLLOW THIS PATTERN: <projectid>.<datasetname>.<tablename>
table_id = "healthy-pager-276023.pythoncsv.table_name"
job_config = bigquery.LoadJobConfig(
source_format=bigquery.SourceFormat.CSV, skip_leading_rows=1, autodetect=True,
)
path_to_file_name = "massdata.csv" #<-- PATH TO CSV TO IMPORT
with open(path_to_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))
И вот мои конфигурации из консоли gcloud из big query: