Мне нужно автоматизировать загрузку локального CSV-файла в ведро хранилища Google в Python. Какую библиотеку Python я могу использовать? Любой образец кода будет очень оценен.Загрузить CSV-файл в Google Cloud Storage с помощью Python
ответ
Вам не нужно импортировать какую-либо библиотеку. Вы можете создать запрос POST к методу/загрузки URI и добавить параметр запроса
uploadType=media
Например:
POST https://www.googleapis.com/upload/storage/v1/b/myBucket/o?uploadType=media
Добавить параметр имени запроса, чтобы определить, какой ресурс загрузка связана.
Например, чтобы указать, что имя объекта является MyObject:
POST https://www.googleapis.com/upload/storage/v1/b/myBucket/o?uploadType=media&name=myObject
Добавить данные файла в теле запроса. Добавьте следующие HTTP-заголовки:
- Content-Type. Установите для типа носителя MIME загружаемого объекта.
- Content-Length. Установите количество загружаемых байтов. Этот заголовок не требуется, если вы используете кодировку с коротким передачей.
Пример загрузки:
POST https://www.googleapis.com/upload/storage/v1/b/myBucket/o?uploadType=media&name=myObject HTTP/1.1
Content-Type: [csv]
Content-Length: [NUMBER_OF_BYTES_IN_FILE]
Authorization: Bearer [YOUR_AUTH_TOKEN]
[DATA]
вы можете использовать панды библиотеки. следуйте приведенному ниже примеру:
import pandas as pd
tobq = pd.read_csv("local.csv")
pd.io.gbq(tobq, "big_query_table_name", "project_name", private_key="big_query_private_key.json")
Мы можем использовать клиент api google python для загрузки файлов в облачную хранилище Google.
Сначала установите клиент api следующим образом.
>pip install --upgrade google-api-python-client
Затем включите аутентификацию api, чтобы получить учетные данные по умолчанию для приложения.
>gcloud beta auth application-default login
Ниже приведен пример кода, который загружает локальный файл в облачном хранилище Google, используя учетные данные приложения по умолчанию.
from googleapiclient import discovery
from oauth2client.client import GoogleCredentials
credentials = GoogleCredentials.get_application_default()
service = discovery.build('storage', 'v1', credentials=credentials)
filename = 'C:\\MyFiles\\sample.csv'
bucket = 'my_bucket'
body = {'name': 'dest_file_name.csv'}
req = service.objects().insert(bucket=bucket, body=body, media_body=filename)
resp = req.execute()
Это загрузит файл внутри my_bucket. Полный URL-адрес хранилища Google для загруженного файла будет gs: //my_bucket/dest_file_name.csv