2 回答

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果您有權(quán)訪問 neo4j.conf,則可以修改 的值以指向可訪問的目錄dbms.directories.import

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
該解決方案在一個(gè)地方?jīng)]有得到很好的記錄。但這是通過反復(fù)試驗(yàn)和錯(cuò)誤演變而來的,并且有效。
我在資源中創(chuàng)建了一個(gè)存儲(chǔ)帳戶
創(chuàng)建了一個(gè)可從放置上載文件的代碼訪問的目錄。
添加了容器,稱為 neo4j-import
然后,我可以將文件作為blob(即*.csv文件)傳輸?shù)饺萜?/p>
然后,您需要使該文件可訪問。這涉及創(chuàng)建一個(gè) sas 令牌并將其附加到指向容器和文件的 URL(請參閱下面的 python 代碼來執(zhí)行此操作)。
您可以在本地瀏覽器中測試此 URL。它應(yīng)該檢索文件,如果沒有 sas 令牌,則無法訪問該文件
此 URL 在 LOAD CSV 語句中使用,并成功加載 Neo4j 數(shù)據(jù)庫
步驟 4 的代碼;請?jiān)徴迟N到此處時(shí)縮進(jìn)問題。
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)
關(guān)鍵的 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}
我希望這有助于其他人瀏覽這種情況!
添加回答
舉報(bào)