【知識圖譜】Neo4j圖形數據庫——數據清除與數據遷移

目錄

一、刪除數據方案

方案1、我們可以通過以下查詢刪除所有節點和關係:

方案2、我們可以刪除所有有關係的節點:

方案3、刪除graph.db數據庫文件:

1. 關閉Neo4j服務器進程

2. 刪除graph.db數據庫文件

3. 重新啓動Neo4j服務器

4. 連接Neo4j Browser重設密碼

二、數據遷移導入導出

關閉Neo4j:

數據導出:

數據導入:

重啓服務:


一、刪除數據方案

方案1、我們可以通過以下查詢刪除所有節點和關係:

MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r

但是新創建的節點獲取內部ID爲({last node internal id} 1)。它不會重置爲零。我們如何重置neo4j數據庫,如新創建的節點將獲取id爲0?

方案2、我們可以刪除所有有關係的節點:

MATCH (n) DETACH DELETE n

方案3、刪除graph.db數據庫文件:

在開發過程中,很多時候需要快速清除(簡單粗暴)Neo4j中存在的海量數據節點和關係數據。當數據量太大,關係節點過多這種情況下,delete和detach從性能上都已力不從心。Neo4j官方推薦清庫方法,即刪除graph.db數據庫文件,暴力清空數據庫。

1. 關閉Neo4j服務器進程

Neo4j數據進行備份、還原、遷移的操作時,首先要關閉neo4j;

# 進入目錄 /usr/share/neo4j/bin
neo4j stop
# 輸出Neo4j not running

出現這種情況, Neo4j沒有運行, 但是瀏覽器仍然可以訪問neo4j數據庫的情況,直接執行導入數據後,是無法看到導入的數據庫,其實這種情況下Neo4j仍在運行(否則瀏覽器是無法然訪問的),這就需要強制殺死Neo4j進程,則執行命令 

ps -ef|grep neo4j

檢查服務器進程是否啓動,如啓動,可通過kill -9或其它方式殺掉服務器進程。

kill -9 <對應的pid>

關閉Neo4j後,再次用瀏覽器訪問Neo4j,是無法訪問的,說明Neo4j是關閉運行了,在此情況下,是可以執行Neo4j的數據庫刪除、數據的導出與導入。

2. 刪除graph.db數據庫文件

找到<NEO4J_HOME>/data/databases/路徑(我的是在/usr/share/neo4j/data/databases),可以看到graph.db文件夾。進入對應目錄下,刪除此文件夾即可。
Linuxx系統、樹莓派系統可通過以下命令刪除

rm -rf graph.db

3. 重新啓動Neo4j服務器

通過在/usr/share/neo4j/bin目錄下執行如下命令啓動Neo4j:

./neo4j console 

Neo4j在啓動過程中,會發現graph.db文件夾丟失,重新建立新數據,從而完成清空任務。

4. 連接Neo4j Browser重設密碼

由於數據庫重新建立,需要重新設置數據庫用戶名和密碼。可通過連接啓動後的Neo4j Browser重新設置,也可通過命令行等進行設置。默認賬號密碼均爲neo4j。
通過以上四個步驟,即完成了Neo4j數據的清空。

二、數據遷移導入導出

在對Neo4j數據進行備份、還原、遷移的操作時,首先要關閉neo4j,如果要清空數據請參考上一步驟。

關閉Neo4j:

# 關閉Neo4j數據庫
cd %NEO4J_HOME%/bin
./neo4j stop

數據導出:

# Linux、樹莓派系統等環境下
./neo4j-admin  dump --database=graph.db --to=/home/pi/Downloads/graph.db.dump

# Windows系統,導出目錄儘量在磁盤根目錄下,不然容易出問題。
neo4j-admin  dump --database=graph.db --to=D:\graph.db.dump

之後,進行數據遷移,將生成的存儲文件拷貝到另一個相同版本的環境中,(測試中可以進行清空Neo4j庫操作:match (n) detach delete n ),還原、遷移之前 ,關閉neo4j服務。操作同上。

數據導入:

# Linux、樹莓派系統環境下
./neo4j-admin load --from=/home/pi/Downloads/graph.db.dump --database=graph.db --force

# Windows環境下
neo4j-admin load --from=D:\graph.db.dump --database=graph.db --force

重啓服務:

neo4j start

一般遇到需要將大規模的數據節點和關係導入Neo4j數據庫中時,建議採用這種導出導入的方式,效率很高,速度很快。本人是在樹莓派上安裝了Neo4j數據庫,並且將Windows系統裏的Neo4j數據庫數據導入到樹莓派系統中。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章