學習記錄-neo4j通過batch-import導入數據


使用batch-import導入節點和關系

參考文檔鏈接:
英文文檔
中文版
博客

下載batch-import工具

  • batch-import原始項目地址:https://github.com/jexp/batch-import

    在導入.gz壓縮文件時,會出現關系無法導入的情況,所以如果要使用.gz壓縮包進行導入,請使用下面這個版本:

  • 某大神修改后的版本:https://github.com/mo9527/batch-import <-- 我下的這個

  • batch-import工具的使用需要java環境( jdk:7以上)

  • batch-import工具目錄結構如下圖:
    在這里插入圖片描述
    將要導入的csv文件和.gz壓縮包放在這個目錄下

CSV文件的一些注意點

  • 只使用了csv文件,未使用.gz壓縮包格式
  • 默認csv文件需要使用tab分隔,如果要導入的csv文件是以逗號‘,’分隔,可以在batch.properties 文件中進行配置:batch_import.csv.delim=,
  • 節點文件:
    • 第一行為屬性名稱
    • 需要有l:label 列才能創建出節點,用於節點標簽
    • 如果最初只導入一個文件,則行號對應於節點 id ( 開始為 0 ),id用於創建關系中
    • 可以根據如下的代碼配置屬性自動索引屬性:name:string:users 和配置的索引,如,然后屬性 name 將在每個行的users 索引中編制索引
    • 屬性字段可以定義類型為 name:type,類型有( int,long,float,double,boolean,byte,short,char,String ),默認類型為String,即只寫name時表示為String類型。
    • 如有多個節點文件名用英文逗號','隔開。節點文件與關系文件間用空格' '隔開。
  • 關系文件(兩種):
    • 一種用id,當節點文件只有一個時,第一列可以寫從節點中這條數據對應的id(從0開始),第二列寫到節點對應的id。(多個節點文件未嘗試成功)
    • 一種用自動索引屬性。例:name:string:users。屬性名name將在users索引中為每一行建立一個值為索引。這種寫法需在batch.properties 文件中進行配置:batch_import.node_index=exact

實例:需要導入兩類節點a,b及關系a->b。

解決方法

  • 方法:經過多次嘗試,最終將兩類節點寫在一個節點文件中(因為兩類節點標簽不同,屬性值也不同故合並到一個文件中),共兩列(一列l:label,一列屬性名)
    nodes.csv
    l:label nm
    a 123
    b 一二三
    也可以將兩個節點的屬性分開寫,只會更改節點中的屬性名,不會有其他影響
    l:label aname bname
    a 123
    b 一二三
    然后在關系文件中將其用id表示,例:第一列(a,123)用0表示,第二列的(b,一二三)用1表示,以此類推。
    rels.csv
    必須第一列為從節點,第二列為到節點
    from to type
    0 1 user
    csv文件中對應的索引id可以用python處理。
    batch-import工具目錄下(import.bat所在目錄)執行命令:import.bat graph.db nodes.csv rels.csv就會在該目錄下生成graph.db文件,(關閉neo4j服務器)將該文件移到 neo4j\data\databases下,(啟動neo4j服務) 瀏覽器中打開neo4j頁面即可查看數據庫中的內容。
  • 注意點
    若在網頁中看到節點上無信息或顯示的不是想看到的信息可以:
    點擊上方節點標簽名 -> 點擊下方想要顯示的消息標題 在這里插入圖片描述

使用配置索引的方法:就像name:string:users

  • 節點文件:
    nodes.csvl:label(必須有這列才能創建節點),另外兩列分別為兩類節點的自動索引屬性。

    nm:string:users l:label mc:string:deviceId
    123 a \
    \ b 一二三

    這里有個bug:l:label必須在中間列才能成功創建關系 ???

  • 關系文件
    rels.csv:從節點列:nm:string:users,到節點列:mc:string:deviceId,關系列:type,屬性列:屬性名:屬性類型(沒有屬性可以不寫)

    nm:string:users mc:string:deviceId type
    123 一二三 uses
  • 配置文件&執行命令
    先在batch.properties中配置

    	batch_import.node_index.users=exact
    	batch_import.node_index.buyerId=exact
    	batch_import.relationship_index.worked=exact
    

    再在batch-import工具目錄下(import.bat所在目錄)執行命令:import.bat graph.db nodes.csv rels.csv就會在該目錄下生成graph.db文件,(關閉neo4j服務器)將該文件移到 neo4j\data\databases下,(啟動neo4j服務) 瀏覽器中打開neo4j頁面即可查看數據庫中的內容。

  • 這個好像有時候有點問題?還沒弄清楚,待更

疑問

  • 如何導入多個節點文件?

補充

  • 如果需要在已有數據庫中添加節點和關系,需要在batch.properties中配置batch_import.keep_db=true,否則將創建一個新的數據庫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM