在 Neo4j 中,如果需要将数据从 一个环境导出 ,再 导入到另一个环境(如从开发环境迁移到生产环境),可以通过以下方法实现:
方法 1:使用 neo4j-admin 导出和导入(完整数据库迁移)
一、全库导出与导入(neo4j-admin)
1. 导出数据(源环境)
            
            
              bash
              
              
            
          
          # 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 neo4j2. 导入数据(目标环境)
            
            
              bash
              
              
            
          
          # 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验证数据
            
            
              cypher
              
              
            
          
          MATCH (n) RETURN count(n);  -- 检查节点数量
SHOW CONSTRAINTS;          -- 验证约束和索引方法 2:使用 apoc.export 和 apoc.import(部分数据迁移)
适用于 导出特定数据(如子图、CSV/JSON) 并导入到其他环境。
步骤 1:在源环境导出数据
(1)导出为 Cypher 脚本(包含节点和关系)
            
            
              cypher
              
              
            
          
          CALL apoc.export.cypher.all("export.cypher", {format: 'plain'});- 导出文件 :export.cypher(默认存储在/var/lib/neo4j/import/)
(2)导出为 CSV/JSON
            
            
              cypher
              
              
            
          
          // 导出查询结果为 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:将导出文件复制到目标环境
            
            
              bash
              
              
            
          
          # 从容器复制到宿主机
docker cp neo4j:/var/lib/neo4j/import/export.cypher ./backups/
# 传输到目标机器
scp ./backups/export.cypher user@target-machine:/path/to/import/步骤 3:在目标环境导入数据
(1)导入 Cypher 脚本
            
            
              cypher
              
              
            
          
          // 直接执行导出的 Cypher 脚本
CALL apoc.cypher.runFile("file:///export.cypher");(2)导入 CSV/JSON
            
            
              cypher
              
              
            
          
          // 导入 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。
按需选择方法即可!