使用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.csvl:label nm a 123 b 一二三 l:label aname bname a 123 b 一二三
rels.csv
必須第一列為從節點,第二列為到節點from to type 0 1 user
batch-import工具目錄下(import.bat所在目錄)執行命令:import.bat graph.db nodes.csv rels.csv
就會在該目錄下生成graph.db文件,(關閉neo4j服務器)將該文件移到 neo4j\data\databases下,(啟動neo4j服務) 瀏覽器中打開neo4j頁面即可查看數據庫中的內容。 - 注意點:
若在網頁中看到節點上無信息或顯示的不是想看到的信息可以:
點擊上方節點標簽名 -> 點擊下方想要顯示的消息標題
使用配置索引的方法:就像name:string:users
-
節點文件:
nodes.csv:l: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
,否則將創建一個新的數據庫。