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}
我希望这有助于其他人浏览这种情况!
添加回答
举报