使用 Python 将 CSV 文件上传到 Google 云存储
Upload CSV file to Google Cloud Storage using Python
我需要自动将本地 csv 文件上传到 Python 中的 Google 云存储桶中。我可以使用哪个 Python 库?任何示例代码将不胜感激。
您不需要导入任何库。
您可以向方法的 /upload URI 创建一个 POST 请求并添加查询参数
uploadType=media
例如:
POST https://www.googleapis.com/upload/storage/v1/b/myBucket/o?uploadType=media
添加名称查询参数以标识上传与哪个资源相关联。
例如,要指定 object 的名称是 myObject:
POST https://www.googleapis.com/upload/storage/v1/b/myBucket/o?uploadType=media&name=myObject
将文件的数据添加到请求中 body。
添加以下 HTTP headers:
- Content-Type。设置为正在上传的 object 的 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]
您可以使用 pandas 库。遵循以下示例:
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")
我们可以使用 google python 客户端 api 将文件上传到 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 中的文件。上传文件的完整 google 存储空间 url 为 gs://my_bucket/dest_file_name.csv
另一种方式如本link所示。
首先,连接到云端
from gcloud import storage
client = storage.Client()
然后 select 存储桶并选择远程文件名
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!')
我需要自动将本地 csv 文件上传到 Python 中的 Google 云存储桶中。我可以使用哪个 Python 库?任何示例代码将不胜感激。
您不需要导入任何库。 您可以向方法的 /upload URI 创建一个 POST 请求并添加查询参数
uploadType=media
例如:
POST https://www.googleapis.com/upload/storage/v1/b/myBucket/o?uploadType=media
添加名称查询参数以标识上传与哪个资源相关联。
例如,要指定 object 的名称是 myObject:
POST https://www.googleapis.com/upload/storage/v1/b/myBucket/o?uploadType=media&name=myObject
将文件的数据添加到请求中 body。 添加以下 HTTP headers:
- Content-Type。设置为正在上传的 object 的 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]
您可以使用 pandas 库。遵循以下示例:
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")
我们可以使用 google python 客户端 api 将文件上传到 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 中的文件。上传文件的完整 google 存储空间 url 为 gs://my_bucket/dest_file_name.csv
另一种方式如本link所示。
首先,连接到云端
from gcloud import storage
client = storage.Client()
然后 select 存储桶并选择远程文件名
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!')