簡體   English   中英

使用 Python 將 CSV 文件上傳到 Google Cloud Storage

[英]Upload CSV file to Google Cloud Storage using Python

我需要自動將本地 csv 文件上傳到 Python 中的 Google Cloud 存儲桶。 我可以使用哪個 Python 庫? 任何示例代碼將不勝感激。

我們可以使用google python client api將文件上傳到google雲存儲。

首先,安裝api客戶端如下。

>pip install --upgrade google-api-python-client

然后,啟用 api 身份驗證以獲取應用程序默認憑據。

>gcloud beta auth application-default login

下面是使用應用程序默認憑據將本地文件上傳到谷歌雲存儲的示例代碼。

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 將是 gs://my_bucket/dest_file_name.csv

另一種方法如此鏈接所示。

首先,連接到雲

from gcloud import storage
client = storage.Client()

然后選擇存儲桶並選擇遠程文件名

bucket = client.get_bucket('<your-bucket-name>')
blob = bucket.blob('remote_file.txt')

最后,上傳本地文件。 我更喜歡以下方式,但還有其他方式。

blob.upload_from_filename('local_file_txt')

如果你有一個變量,上面這行要求你將變量寫入磁盤,然后上傳,這可能不是最好的方法。 相反,您可以直接從字符串寫入 blob。

blob.upload_from_string('this is test content!')

您不需要導入任何庫。 您可以創建對方法的 /upload URI 的 POST 請求並添加查詢參數

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 標頭:

  • 內容類型。 設置為正在上傳的對象的 MIME 媒體類型。
  • 內容長度。 設置為您上傳的字節數。 如果您使用分塊傳輸編碼,則不需要此標題。

上傳示例:

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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM