数据迁移:如何从MySQL数据库高效迁移到Neo4j图形数据库
总体步骤
- 我的Neo4j 5.21.2 ✅
- 部署APOC插件(社区版已内置)🔌
- 下载MySQL JDBC驱动📦 → 丢进Neo4j的plugins文件夹
- 重启Neo4j服务 🔄
1. 安装apoc
1.1 apoc安装
官网下载:https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases/tag/5.21.0
apoc插件进行可能在大版本号与Neo4j保持一致,比如我的Neo4j的版本是5.21.2,apoc的版本如果能找到5.21.2最好,否则用5.21.0也是可以的
放在neo4j的plugins文件夹下
然后在neo4j.conf里进行配置
# 启用 APOC 插件
dbms.directories.plugins=plugins
# 允许 APOC 过程执行
dbms.security.procedures.unrestricted=apoc.*,gds.*
dbms.security.procedures.allowlist=apoc.coll.*,apoc.load.*,apoc.meta.data,apoc.*,gds.*
# 启用文件导入导出(可选)
apoc.import.file.enabled=true
apoc.export.file.enabled=true
重启neo4j
1.2 apoc验证
在Neo4j浏览器上输入
CALL apoc.version()
有返回版本号更好,不返回报错加载失败,貌似也无所谓
2. 安装mysql连接驱动包
2.1 去官方下载
我的是:mysql-connector-java-5.1.47.jar
放在neo4j的plugins文件夹下
重启neo4j
3. 数据导入
3.1 导入命令
CALL apoc.load.jdbc(
'jdbc:mysql://114.115.200.146:3306/haosen?user=root&password=huawei12345679&serverTimezone=UTC&useSSL=false',
'select device_name,device_id,device_type,assembly_process,device_form,cycle_time from Case_Device'
) YIELD row
CREATE (:Case_Device {
device_name: row.device_name,
name: row.device_name,
device_id: row.device_id,
device_type: row.device_type,
assembly_process: row.assembly_process,
device_form: row.device_form,
cycle_time: row.cycle_time
});
这里需要注意的是在 JDBC URL 中禁用 SSL,即添加useSSL=false
原因:MySQL 5.x 通常不强制使用 SSL,但 Java 默认启用 SSL,导致协议冲突。