簡體   English   中英

將 csv 個文件從 azure blob 存儲 A 復制到 azure blob 存儲 B

[英]copy csv files from azure blob storage A to azure blob storage B

我想將文件從 A blob 存儲復制到 blob B,條件是只將新文件復制/寫入存儲 B。我正在使用 BlockBlobService package 列出一個 blob A 的所有文件,但是這個 package 是否也有一個 function 到將新文件復制/寫入另一個 blob 存儲?? 我在 Python 順便說一句.. 請幫幫我:(...我現在有點無助,我嘗試使用這個 package DataLakeServiceClient 將文件寫入 azure blob 存儲 B。但是這個打包的 DataLakeServiceClient 不兼容使用 BlockBlobService。所以我知道該怎么做。

如果您嘗試過另一種方法來做我想做的同樣的事情,請與我分享您的智慧和知識。

我會說,試試azcopy工具。 它支持在存儲帳戶之間復制數據。 例如:

azcopy copy 'https://sourceacc.blob.core.windows.net/container/dir' 'https://destacc.blob.core.windows.net/container' --recursive

然后,將它與值為falseifSourceNewer--overwrite標志一起使用,以指定目標處現有 blob 的行為:

--overwrite (string)如果此標志設置為 true,則覆蓋目標處的沖突文件和 blob。 (默認為“true”)可能的值包括“true”、“false”、“prompt”和“ifSourceNewer”。 對於支持文件夾的目標,沖突的文件夾級屬性將被覆蓋此標志為“真”或者如果對提示提供肯定響應。 (默認“真”)

有關如何開始的信息,請參閱此文檔

從我這邊復制后,我可以使用 BlockBlobService 的get_blob_to_pathcreate_blob_from_path來實現這一點 以下是對我有用的完整代碼。

from azure.storage.blob import BlockBlobService
import os 

SOURCE_ACCOUNT_NAME = "<source_Account_Name>"
SOURCE_CONTAINER_NAME = "<source-container>"
SOURCE_SAS_TOKEN='<Source_Storage_Account_SAS_Token>'

DESTINATION_ACCOUNT_NAME = "<destination_Account_Name>"
DESTINATION_CONTAINER_NAME = "<destination-container>"
DESTINATION_SAS_TOKEN='<Destination_Storage_Account_SAS_Token>'

source_blob_service = BlockBlobService(account_name=SOURCE_ACCOUNT_NAME,account_key=None,sas_token=SOURCE_SAS_TOKEN)
destination_blob_service = BlockBlobService(account_name=DESTINATION_ACCOUNT_NAME,account_key=None,sas_token=DESTINATION_SAS_TOKEN)

generator = source_blob_service.list_blobs(SOURCE_CONTAINER_NAME)
for blob in generator:
    blobname=blob.name
    source_blob_service.get_blob_to_path(SOURCE_CONTAINER_NAME,blobname,blobname,'wb')
    destination_blob_service.create_blob_from_path(DESTINATION_CONTAINER_NAME,blobname,blobname)
    os.remove(blobname)

結果:

在此處輸入圖像描述

在此處輸入圖像描述

暫無
暫無

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

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