偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何使用batch-import工具向neo4j中導(dǎo)入海量數(shù)據(jù)

運維 數(shù)據(jù)庫運維
在開發(fā)neo4j的過程中,經(jīng)常會有同學(xué)問如何向neo4j中導(dǎo)入大量的歷史數(shù)據(jù),而這些數(shù)據(jù)一般都會存在于關(guān)系型數(shù)據(jù)庫中,現(xiàn)在本人就根據(jù)自己的導(dǎo)入經(jīng)歷,把導(dǎo)入的過程和一些挖過的坑分享給大家,以便后面的同學(xué)少走彎路。

【引自T_SevenS的博客】在開發(fā)neo4j的過程中,經(jīng)常會有同學(xué)問如何向neo4j中導(dǎo)入大量的歷史數(shù)據(jù),而這些數(shù)據(jù)一般都會存在于關(guān)系型數(shù)據(jù)庫中,現(xiàn)在本人就根據(jù)自己的導(dǎo)入經(jīng)歷,把導(dǎo)入的過程和一些挖過的坑分享給大家,以便后面的同學(xué)少走彎路,廢話不多說,直接上干貨。

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

這個工具是neo4j的作者之一Michael Hunger所編寫,是在neo4j自帶批量導(dǎo)入工具基礎(chǔ)之上做的進一步優(yōu)化,但是它在導(dǎo)入.gz壓縮文件時,會出現(xiàn)關(guān)系無法導(dǎo)入的情況,所以如果要使用.gz壓縮包進行導(dǎo)入,請使用我修改過的版本:https://github.com/mo9527/batch-import

2、環(huán)境準(zhǔn)備

jdk:7以上

內(nèi)存:8G以上,導(dǎo)入數(shù)據(jù)多的話會非常消耗內(nèi)存,我自己導(dǎo)入的是將近1.5億節(jié)點,3億關(guān)系,用的是32G內(nèi)存

3、導(dǎo)入步驟

a)從github上clone下代碼,并使用maven進行打包,打完包后的jar文件,與項目本身的依賴jar一起放到lib文件夾下,batch.properties文件和執(zhí)行導(dǎo)入的腳本放在lib同級目錄下,***的目錄結(jié)構(gòu)如下圖:

 

ps:file文件夾是我自己將要導(dǎo)入的csv文件和.gz壓縮包。

b)組裝csv文件

說起這一步,可能需要你們根據(jù)自己的實際業(yè)務(wù)需求,手動寫代碼導(dǎo)csv文件了,這里我只講一下csv文件格式一些要點:

1)、節(jié)點csv文件

節(jié)點csv文件的***列是固定的,列值為此節(jié)點的label名稱,第二列是index,它的列頭是id:string:indexName 這種格式,解釋一下,id是這一列的property名字,可以根據(jù)需要自己命名,string為字段的數(shù)據(jù)類型,indexName是neo4j數(shù)據(jù)庫中將要導(dǎo)入的索引名稱,我自己的文件格式如下:

 

然后,后面的列就是節(jié)點的property了,沒什么特別的要求

2)、關(guān)系csv文件

先看下我的關(guān)系csv文件:

 

關(guān)系的csv文件前兩列要特別注意,***列是關(guān)系的起始節(jié)點,第二列是關(guān)系的結(jié)束節(jié)點,第三列是關(guān)系類型,后面的列是關(guān)系的property,可以隨意了。他github上的說明沒有說出一些注意點,這里要特別標(biāo)明:

***列的起始節(jié)點的列頭,也就是id:string:buyerId這個東西,這個玩意一定要和節(jié)點csv文件(上圖)中定義的一模一樣,第二列也是如此,要和結(jié)束節(jié)點的csv文件里的一樣,不然他會找不到對應(yīng)的關(guān)系。

3)、修改batch.properties文件

主要修改兩個地方,

  • 如果是在現(xiàn)有的neo4j數(shù)據(jù)庫中進行導(dǎo)入,請設(shè)置:

batch_import.keep_db=true

  • 將節(jié)點csv文件中所有的索引名稱加入到文件中,例如上面這個節(jié)點csv文件中的索引名稱是buyerId,那就在文件中加入batch_import.node_index.buyerId=exact

以下是我本人的配置文件:

 

4、導(dǎo)入

linux和win環(huán)境的導(dǎo)入都差不多,只不過執(zhí)行的腳本不一樣,這里以win環(huán)境為例。

文件都準(zhǔn)備好了,現(xiàn)在開始導(dǎo)入了。

打開cmd,cd到導(dǎo)入腳本的目錄,也就是import.bat所在目錄,執(zhí)行命令:

  1. import.bat test.db node.csv rel.csv 

解釋一下命令的幾個參數(shù):***個參數(shù)是數(shù)據(jù)庫的目錄,可以絕對路徑指定到任意位置,第二個參數(shù)是節(jié)點csv文件,多個csv文件用逗號分隔,如果是壓縮包,一定要注意,這里有個坑,不能把所有類型的node都放到一個壓縮包中,一定要每個類型的node分開壓縮,不然它只會導(dǎo)入***個類型的node節(jié)點,同理,關(guān)系的壓縮包也要分開壓縮,然后導(dǎo)入時用逗號分隔.gz文件。

好了,如果你的csv文件沒有問題,內(nèi)存足夠用的話,現(xiàn)在就開始等待吧。

如果想修改導(dǎo)入工具的Heap大小,可以修改腳本文件中的 set HEAP=4G 

 

溫馨提示:如果節(jié)點文件中有中文的話,導(dǎo)入會非常慢的,除非你內(nèi)存有128G,我有一個節(jié)點文件,里面只有一列是中文,而且中文最長不超過4個漢字,2000多萬記錄導(dǎo)了2個小時,注意我是32G內(nèi)存,其他4000多萬的節(jié)點,沒有漢字的,基本上不超過2分鐘。 

責(zé)任編輯:龐桂玉 來源: T_SevenS的博客
相關(guān)推薦

2025-07-18 08:15:55

2017-07-28 15:12:28

Neo4j圖數(shù)據(jù)庫

2022-11-18 17:53:03

Neo4j

2022-04-13 11:32:45

Neo4j圖數(shù)據(jù)庫

2018-05-16 08:26:39

知識圖譜Neo4j

2021-12-27 07:31:37

JavaNeo4J數(shù)據(jù)庫

2024-08-08 08:31:32

SpringNeo4j優(yōu)化

2011-07-26 12:48:52

neo4j圖數(shù)據(jù)庫

2021-12-03 20:33:08

計算

2025-10-09 00:00:00

Neo4jLLMs結(jié)構(gòu)化

2025-07-21 09:23:13

2024-06-03 10:53:18

LLMRAGGraphRAG

2022-01-17 14:34:59

數(shù)據(jù)平臺數(shù)據(jù)數(shù)字化

2022-01-17 17:10:18

Neo4j 圖數(shù)據(jù)庫

2011-09-22 16:46:02

Neo4j圖形數(shù)據(jù)庫數(shù)據(jù)庫

2015-09-28 08:57:06

Ruby APPNeo4j

2018-05-03 15:40:33

2022-02-15 08:22:28

Neo4jSpring數(shù)據(jù)庫

2021-10-27 17:20:23

圖數(shù)據(jù)數(shù)據(jù)庫

2022-03-23 09:37:54

Neo4j開源侵犯
點贊
收藏

51CTO技術(shù)棧公眾號