#python #google-cloud-platform #google-cloud-storage #google-cloud-sql
#python #google-облачная платформа #google-облачное хранилище #google-cloud-sql
Вопрос:
Я новичок в GCP, а также в Python.
Я пытаюсь прочитать csv-файлы, которые присутствуют в облачном хранилище Google, и записать данные в облачную таблицу sql с помощью Python.Кто-нибудь может помочь в этом.Любая помощь будет оценена.
Заранее спасибо
Ответ №1:
Вы не должны читать и загружать данные, если у вас нет обновления / очистки для выполнения с данными. Вы можете использовать облачный SQL для загрузки CSV из облачного хранилища. Он также работает с PostgreSQL (измените для этого сверху на странице)
Вам нужен пример кода для вызова REST API на Python? (сегодня это довольно просто, но, возможно, безопасность может вас раздражать!)
Комментарии:
1. На самом деле мне нужно выполнить некоторую операцию преобразования, поэтому я хочу использовать python в облачных функциях, чтобы он мог выполнять etl из облачного хранилища в облачный sql
2. Понятно. Каков максимальный размер вашего CSV-файла?
3. Размер будет составлять несколько МБ
Ответ №2:
Мне нравится использовать google-cloud-storage при работе с GCS. Пакет по сути является оболочкой для API GCloud.
Вот как вы можете использовать эту библиотеку:
from google.cloud import storage
# create the client
path_to_service_account = "path/foo.json"
client = storage.Client.from_service_account_json(path_to_service_account)
# get the bucket
bucket_name = "my-bucket"
bucket = client.lookup_bucket(bucket_name)
# loop through the bucket to get the resource you want
for resource in bucket.list_blobs(prefix="dir-name/"):
# file type doesn't need to be a csv...
if resource.endswith("my_file.csv"):
my_blob = bucket.get_blob(resource)
my_blob_name = resource.split("/")[-1]
my_blob.download_to_filename(os.path.join("save-dir", my_blob_name))
# finally, load the file from local storage:
...
Комментарии:
1. Вы можете. Но нет необходимости проходить аутентификацию с помощью json. Просто запустите клиент с помощью
client = storage.Client()