批量數(shù)據(jù)導(dǎo)入Neo4j的實(shí)現(xiàn)方式
批量數(shù)據(jù)導(dǎo)入Neo4j方式
1、寫在前面
- Linux版本:
Ubuntu Kylin 16.04 - Neo4j版本:
Neo4j-3.2.7
2、前置芝士
- 最常見的數(shù)據(jù)格式之一是平面文件上的
行和列。 - 這種電子表格格式被用于各種關(guān)系型數(shù)據(jù)庫的導(dǎo)入和導(dǎo)出,所以用這種方式檢索現(xiàn)有數(shù)據(jù)是很容易的。
- 很明顯,CSV格式就是這種類型。
Cypher中的LOAD CSV命令允許我們指定一個(gè)文件路徑、是否有頭文件、不同的值定界符,以及Cypher語句,以便我們?cè)趫D形中對(duì)這些表格數(shù)據(jù)進(jìn)行建模。
進(jìn)入Neo4j安裝目錄,并且進(jìn)入到conf目錄中,查看neo4j.conf配置文件
zhangsan@node01:~$ cd /usr/local/neo4j-3.5.12/conf/ zhangsan@node01:/usr/local/neo4j-3.5.12/conf$ ll 總用量 24 drwxr-xr-x 2 lbj lbj 4096 11月 24 06:38 ./ drwxr-xr-x 12 lbj lbj 4096 11月 24 06:32 ../ -rw-r--r-- 1 lbj lbj 15918 10月 18 04:21 neo4j.conf
neo4j.conf配置文件中的dbms.directories.import參數(shù)是關(guān)于load data的文件路徑的設(shè)置,默認(rèn)是在Neo4j安裝目錄下的
import目錄,刪除/注釋掉dbms.directories.import=import這一行,即可使用自定義路徑導(dǎo)入數(shù)據(jù)到Neo4j
# This setting constrains all `LOAD CSV` import files to be under the `import` directory. Remove or comment it out to # allow files to be loaded from anywhere in the filesystem; this introduces possible security problems. See the # `LOAD CSV` section of the manual for details. dbms.directories.import=import
3、CSV數(shù)據(jù)導(dǎo)入Neo4j
3.1 LOAD CSV Cypher命令
LOAD CSV Cypher命令:
- 該命令是一個(gè)很好的導(dǎo)入數(shù)據(jù)方式,可以處理中小尺寸的數(shù)據(jù)集(最多1000萬條記錄)。
- 可用于任何設(shè)置,包括AuraDB。
LOAD CSV可以處理本地和遠(yuǎn)程文件,每一種都有一些相關(guān)的語法。
本地文件可以在文件名前使用file:///的前綴來加載。
因?yàn)锳uraDB是基于云(Cloud)的,所以這種本地文件的方法不能用于AuraDB,只能用于本地安裝。
- CSV文件不帶有header
USING PERIODIC COMMIT 200 LOAD CSV FROM 'file:///tb_books.csv' AS line
merge (b1:books1{id:line[0],type:line[1],name:line[2],author:line[3],price:line[4]})
- CSV文件首行是header信息
USING PERIODIC COMMIT 200 LOAD CSV WITH HEADERS FROM 'file:///tb_books.csv' AS line
merge (b1:books1{id:line[0],type:line[1],name:line[2],author:line[3],price:line[4]})
USING PERIODIC COMMIT之后的參數(shù):指定一次導(dǎo)入數(shù)據(jù)的上限是多少
關(guān)于csv格式數(shù)據(jù)導(dǎo)入的重要說明
- 所有來自CSV文件的數(shù)據(jù)都是以
字符串形式讀取的,所以你需要使用toInteger(),toFloat(),split()或類似函數(shù)來轉(zhuǎn)換數(shù)值。 - 標(biāo)簽(label)、屬性名稱(field)、關(guān)系類型(relationship)和變量是
區(qū)分大小寫的。 - 數(shù)據(jù)越干凈,加載就越容易。盡量在加載前處理復(fù)雜的清理/操作。
請(qǐng)記住,Neo4j不存儲(chǔ)空值。CSV文件中的空字段可以被跳過,或者在LOAD CSV中用默認(rèn)值替換。
3.2 neo4j-admin命令
neo4j-admin批量導(dǎo)入工具:
- 命令行工具,可用于直接加載
大型數(shù)據(jù)集。 - 適用于Neo4j桌面、Neo4j EE Docker鏡像和本地安裝。
../bin/neo4j-admin import --database orders
--nodes=Customer=customers.csv
--nodes=products.csv
--nodes=Order="orders_header.csv,orders1.csv,orders2.csv"
--relationships=CONTAINS=order_details.csv
--relationships=ORDERED="customer_orders_header.csv,orders1.csv,orders2.csv"
--trim-strings=true
3.3 Kettle導(dǎo)入工具
Kettle導(dǎo)入工具:
- 映射和執(zhí)行數(shù)據(jù)處理流程的步驟,對(duì)于非常大的數(shù)據(jù)集來說效果很好。
- 適用于任何設(shè)置,包括AuraDB。
4、數(shù)據(jù)導(dǎo)入失敗
如果,數(shù)據(jù)文件的路徑?jīng)]有問題之后,那大概率是文件的格式問題,將文件重新保存為utf-8的格式即可。
利用NotePad++或者Sublime Text即可
參考資料:neo4j
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux學(xué)習(xí)教程之redis哨兵集群詳解
這篇文章主要給大家介紹了關(guān)于Linux學(xué)習(xí)教程之Redis哨兵集群的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
Linux下9種優(yōu)秀的代碼比對(duì)工具推薦小結(jié)
這篇文章主要介紹了Linux下9種優(yōu)秀的代碼比對(duì)工具推薦小結(jié),不僅有命令行工具,還有 GUI 界面工具,讓你輕松進(jìn)行代碼比對(duì),感興趣的可以一起來了解一下2020-06-06
詳解Linux系統(tǒng)配置nginx的負(fù)載均衡
這篇文章主要介紹了詳解Linux系統(tǒng)配置nginx的負(fù)載均衡的相關(guān)資料,這里對(duì)負(fù)載均衡的幾種方式進(jìn)行了講解并附NGINX配置文件,需要的朋友可以參考下2017-03-03

