繁体   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