在 Neo4j 中,如果需要將數據從 一個環境導出,再 導入到另一個環境(如從開發環境遷移到生產環境),可以通過以下方法實現:
方法 1:使用 neo4j-admin
導出和導入(完整數據庫遷移)
一、全庫導出與導入(neo4j-admin
)
1. 導出數據(源環境)
# 1. 停止 Neo4j 容器
docker-compose stop neo4j# 2. 執行導出(生成 `neo4j.dump`)
docker-compose run --rm neo4j \neo4j-admin database dump neo4j \--to-path=/var/lib/neo4j/backups/# 3. 從容器復制備份文件到宿主機
docker cp neo4j:/var/lib/neo4j/backups/neo4j.dump ./backups/# 4. 重啟 Neo4j(可選)
docker-compose start neo4j
2. 導入數據(目標環境)
# 1. 將 `neo4j.dump` 復制到目標機的掛載目錄(如 `./backups/`)
scp ./backups/neo4j.dump user@target:/path/to/backups/# 2. 停止目標 Neo4j
docker-compose stop neo4j# 3. 執行導入(覆蓋現有數據)
docker-compose run --rm neo4j \neo4j-admin database load neo4j \--from-path=/var/lib/neo4j/backups/neo4j.dump \--force# 4. 重啟 Neo4j
docker-compose start neo4j
驗證數據
MATCH (n) RETURN count(n); -- 檢查節點數量
SHOW CONSTRAINTS; -- 驗證約束和索引
方法 2:使用 apoc.export
和 apoc.import
(部分數據遷移)
適用于 導出特定數據(如子圖、CSV/JSON) 并導入到其他環境。
步驟 1:在源環境導出數據
(1)導出為 Cypher 腳本(包含節點和關系)
CALL apoc.export.cypher.all("export.cypher", {format: 'plain'});
- 導出文件:
export.cypher
(默認存儲在/var/lib/neo4j/import/
)
(2)導出為 CSV/JSON
// 導出查詢結果為 CSV
CALL apoc.export.csv.query("MATCH (u:User) RETURN u.name AS name, u.age AS age","users.csv",{}
);// 導出查詢結果為 JSON
CALL apoc.export.json.query("MATCH (u:User) RETURN u","users.json",{}
);
步驟 2:將導出文件復制到目標環境
# 從容器復制到宿主機
docker cp neo4j:/var/lib/neo4j/import/export.cypher ./backups/# 傳輸到目標機器
scp ./backups/export.cypher user@target-machine:/path/to/import/
步驟 3:在目標環境導入數據
(1)導入 Cypher 腳本
// 直接執行導出的 Cypher 腳本
CALL apoc.cypher.runFile("file:///export.cypher");
(2)導入 CSV/JSON
// 導入 CSV
LOAD CSV WITH HEADERS FROM 'file:///users.csv' AS row
CREATE (:User {name: row.name, age: toInteger(row.age)});// 導入 JSON
CALL apoc.load.json("file:///users.json") YIELD value AS row
CREATE (u:User) SET u = row;
方法 3:使用 Neo4j 瀏覽器導出 & 導入
(1)在源環境導出數據
- 打開 Neo4j 瀏覽器(
http://localhost:7474
)。 - 執行查詢(如
MATCH (n) RETURN n
)。 - 點擊 “Export” 按鈕,選擇 CSV/JSON 格式下載。
(2)在目標環境導入數據
- 將下載的文件放入目標 Neo4j 的
import
目錄。 - 使用
LOAD CSV
或apoc.load.json
導入(參考方法 2)。
對比不同方法
方法 | 適用場景 | 優點 | 缺點 |
---|---|---|---|
neo4j-admin dump/load | 全庫遷移 | 完整備份,包含索引/約束 | 需停機 |
apoc.export/import | 部分數據遷移 | 靈活,可導出子圖 | 需手動處理索引 |
Neo4j 瀏覽器導出 | 簡單查詢導出 | 無需命令行 | 僅適合小數據量 |
注意事項
- 版本兼容性:確保源和目標 Neo4j 版本一致,否則
neo4j-admin
可能不兼容。 - 文件權限:確保目標 Neo4j 有權限讀取導入文件。
- APOC 插件:目標環境需安裝相同版本的 APOC。
總結
- 全庫遷移 → 用
neo4j-admin dump/load
(最可靠)。 - 部分數據遷移 → 用
apoc.export
+LOAD CSV
/apoc.import
。 - 簡單數據導出 → 用 Neo4j 瀏覽器 + CSV/JSON。
按需選擇方法即可!