2 回答
TA貢獻1836條經驗 獲得超13個贊
該解決方案在一個地方沒有得到很好的記錄。但這是通過反復試驗和錯誤演變而來的,并且有效。
我在資源中創建了一個存儲帳戶
創建了一個可從放置上載文件的代碼訪問的目錄。
添加了容器,稱為 neo4j-import
然后,我可以將文件作為blob(即*.csv文件)傳輸到容器
然后,您需要使該文件可訪問。這涉及創建一個 sas 令牌并將其附加到指向容器和文件的 URL(請參閱下面的 python 代碼來執行此操作)。
您可以在本地瀏覽器中測試此 URL。它應該檢索文件,如果沒有 sas 令牌,則無法訪問該文件
此 URL 在 LOAD CSV 語句中使用,并成功加載 Neo4j 數據庫
步驟 4 的代碼;請原諒粘貼到此處時縮進問題。
from azure.storage.blob import BlobServiceClient, BlobClient,
ContainerClient, generate_account_sas, ResourceTypes, AccountSasPermissions
def UploadFileToDataStorage(FileName,
UploadFileSourceDirecory=ImportDirectory,BlobConnStr=AzureBlobConnectionString,
Container="neo4j-import"):
#uploads file as blob to data storage
#https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python #upload-blobs-to-a-container
blob_service_client = BlobServiceClient.from_connection_string(BlobConnStr)
blob_client = blob_service_client.get_blob_client(container=Container, blob=FileName)
with open(UploadFileSourceDirecory + FileName, "rb") as data:
blob_client.upload_blob(data)
關鍵的 python 代碼(上面的步驟 5)。
def GetBlobURLwithSAS(FileName,Container="neo4j-import"):
#https://pypi.org/project/azure-storage-blob/
#https://docs.microsoft.com/en-us/python/api/azure-storage-blob/azure.storage.blob.blobserviceclient?view=azure-python
#generates sas token for object blob so it can be consumed by another process
sas_token = generate_account_sas(
account_name="{storage account name}",
account_key="{storage acct key}",
resource_types=ResourceTypes(service=False, container=False, object=True),
permission=AccountSasPermissions(read=True),
expiry=datetime.utcnow() + timedelta(hours=1))
return "https://{storage account name}.blob.core.windows.net/" + Container + "/" + FileName + "?" + sas_token
LOAD 語句如下所示,并且不使用 file:/// 前綴:
LOAD CSV WITH HEADERS FROM '" + {URL from above} + "' AS line FIELDTERMINATOR '|'{your cypher query for loading csv}
我希望這有助于其他人瀏覽這種情況!
添加回答
舉報
