批量數(shù)據(jù)導(dǎo)入Neo4j的方式
1、寫在前面
- Linux版本:
Ubuntu Kylin 16.04
- Neo4j版本:
Neo4j-3.2.7
2、前置芝士
最常見的數(shù)據(jù)格式之一是平面文件上的
行和列
。這種電子表格格式被用于各種關(guān)系型數(shù)據(jù)庫(kù)的導(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即可文章來源:http://www.zghlxwxcb.cn/news/detail-411388.html
5、參考資料
neo4j文章來源地址http://www.zghlxwxcb.cn/news/detail-411388.html
到了這里,關(guān)于批量數(shù)據(jù)導(dǎo)入Neo4j的方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!