前言:看了几篇别人的教程其中出现一些错误,记录一下最终成功的方法。
参考教程:
迁移MySQL的数据到Neo4j
neo4j安装APOC插件
方法:
一:下载所需jar包
apoc下载地址
mysql-connector-java下载地址
放在下图目录下,注意:我的Neo4j版本是3.5.26,对应的apoc版本也是3.5.*,下载过参考教程里的版本,启动服务是时,服务无法启动。
二、修改配置文件
①修改
# Whether requests to Neo4j are authenticated.
# To disable authentication, uncomment this line
#https://www.cnblogs.com/jpfss/p/11365342.html
dbms.security.auth_enabled=true
②添加
#文初
dbms.security.procedures.unrestricted=apoc.*
apoc.import.file.enabled=true
#文末
dbms.memory.pagecache.size=10g
dbms.memory.heap.initial_size=1g
dbms.memory.heap.max_size=4g
三、重启服务
cmd命令行进入如下路径执行:
neo4j restart
四、查看apoc是否安装成功打开
打开http://localhost:7474/
return apoc.version()
出现版本号说明插件安装成功!
五、迁移数据
(可选:清空neo4j数据库数据)
我的数据库中有两个表,一个存储着节点信息,一个存储着边(关系)的信息。
5.1迁移节点
节点表:
在Neo4j中执行的语句:
CALL apoc.load.jdbc('jdbc:mysql://localhost:3306/数据库名?user=root&password=root&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC', 'SELECT * FROM `node表名`') YIELD row CREATE (n:Node {id: row.id, name: row.name, classname: row.classname})
Node表示节点名称(类型),可以为其他,如Person等。
属性:{id: row.id, name: row.name, classname: row.classname}
5.2迁移关系
关系表:
CALL apoc.load.jdbc('jdbc:mysql://localhost:3306/数据库名?user=root&password=root&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC', 'SELECT * FROM `link表名`') YIELD row match (n:Node {id: row.from_node_id}),(m:Node{id:row.to_node_id}) create (n)-[r:from_to{id:row.id,classname:row.classname,kind:row.kind,from_node_id:row.from_node_id,to_node_id:row.to_node_id}]->(m)
大功告成!