亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 CSV 加載到 Azure 上的 Neo4j 中

將 CSV 加載到 Azure 上的 Neo4j 中

牧羊人nacy 2022-08-16 18:26:10
我在Azure上有Neo4j操作。我可以使用python和一系列create語句加載數據:create (n:Person) return n我可以使用python成功查詢。使用 LOAD CSV 需要在 Neo4j 導入目錄中有一個文件。我已經找到了該目錄,但是將文件移動到其中被阻止。我還嘗試將文件放在可訪問的目錄中,但隨后無法弄清楚如何在LOAD CSV語句中解決路徑。此 LOAD 會給出一個錯誤,因為文件無法進入 Neo4j 導入目錄:USING PERIODIC COMMIT 10000 LOAD CSV WITH HEADERS FROM 'file:///FTDNATree.csv' AS line FIELDTERMINATOR '|' merge (s:SNPNode{SNP:toString(line.Parent)})此語句找不到該文件,并給出錯誤:找不到 EXTERNAL 文件USING PERIODIC COMMIT 10000 LOAD CSV WITH HEADERS FROM 'file:///{my directory path/}FTDNATree.csv' AS line FIELDTERMINATOR '|' merge (s:SNPNode{SNP:toString(line.Parent)})盡管 python 和 neo4j 位于同一資源組中,但它們是不同的 VM。問題似乎是兩個VM之間的互操作性?
查看完整描述

2 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

如果您有權訪問 neo4j.conf,則可以修改 的值以指向可訪問的目錄dbms.directories.import

查看 https://neo4j.com/docs/operations-manual/current/reference/configuration-settings/#config_dbms.directories.import


查看完整回答
反對 回復 2022-08-16
?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

該解決方案在一個地方沒有得到很好的記錄。但這是通過反復試驗和錯誤演變而來的,并且有效。

  1. 我在資源中創建了一個存儲帳戶

  2. 創建了一個可從放置上載文件的代碼訪問的目錄。

  3. 添加了容器,稱為 neo4j-import

  4. 然后,我可以將文件作為blob(即*.csv文件)傳輸到容器

  5. 然后,您需要使該文件可訪問。這涉及創建一個 sas 令牌并將其附加到指向容器和文件的 URL(請參閱下面的 python 代碼來執行此操作)。

  6. 您可以在本地瀏覽器中測試此 URL。它應該檢索文件,如果沒有 sas 令牌,則無法訪問該文件

  7. 此 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}

我希望這有助于其他人瀏覽這種情況!


查看完整回答
反對 回復 2022-08-16
  • 2 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號