目錄
一、刪除數據方案
方案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數據庫數據導入到樹莓派系統中。