neo4j安装
安装请尽量按照目标版本的官方文档的流程,使用包管理器安装。
安装时遇到:错误: 找不到或无法加载主类 org.neo4j.server.startup.Neo4jCommand
Error: Could not find or load main class org.neo4j.server.startup.Neo4jCommand
Caused by: java.lang.ClassNotFoundException: org.neo4j.server.startup.Neo4jCommand
此错误是由于JDK版本与neo4j对不上,一个大坑是部分neo4j版本并不能向下兼容JDK!例如neo4j 4.4版本只支持JDK11!!!我排查了半天捣鼓了半天环境变量,发现是我装的是14,版本过高……
neo4j 4 导入neo4j数据库目录文件夹
网上和教程找到的导入方法只有两种情况:
- 导入
.csv
文件 - 导入
.dump
数据库备份文件
但我下载的SpCQL提供的数据库直接是neo4j\data\databases
中的数据库目录文件夹。我导入的过程如下:
- 将文件夹复制到
neo4j\data\databases
目录下 - 在
neo4j\conf\neo4j.conf
中修改dbms.default_database
值为文件夹的名称(即数据库的名称)——由于我用的是社区版,只支持同时打开一个数据库,这一步会让初始数据库(名称为neo4j
)状态变为不可用。如果是企业版可能这一步可以省略,直接切换数据库就好了? 此时启动neo4j,查询到新数据库的状态为offline,用命令查询会报错
An error occurred! Unable to start DatabaseId{xxxxxx}
。并且发现控制台报错Neo4j cannot be started because the database files require upgrading and upgrades are disabled in the configuration. Please set 'dbms.allow_upgrade' to 'true' in your configuration file
照提示做,将
dbms.allow_upgrade
设为true
后重启,等待片刻更新数据库即可正常使用
把数据库升级到neo4j 5
下载的SpCQL数据库版本号是v0.A.9,是neo4j 3.4.0的数据库(版本号对应关系在这里),上面的方法是导入neo4j 4的。但服务器上的neo4j版本为5。
neo4j 5取消了dbms.allow_upgrade
,只能使用neo4j-admin database migrate
命令移植旧数据库 。
但测试发现5的migrate并不支持v0.A.92024-04-26 08:24:23.052+0000 ERROR [o.n.c.d.MigrateStoreCommand] Failed to migrate database 'graph-all02.db': Unable to read store with version 'v0.A.9'. Please make sure that database is migrated properly to be supported by current version of neo4j.
2024-04-26 08:24:23.052+0000 ERROR [o.n.c.d.MigrateStoreCommand] Migration failed for databases: 'graph-all02.db'
org.neo4j.cli.CommandFailedException: Migration failed for databases: 'graph-all02.db'
……
于是只能先按上面的方法在neo4j 4中载入,在neo4j.conf中写入dbms.allow_upgrade=true
,启动neo4j,这时会自动将数据库转换为4的格式——这时已经可以用neo4j 4运行数据库了。
然后再把数据库目录/data/databases/xxx/上传到neo4j 5的对应目录,执行neo4j-admin database migrate
,迁移完成后在neo4j.conf
中切换初始数据库,才能成功运行。
使用neo4j
基础Cypher操作
https://zhuanlan.zhihu.com/p/88745411
安装apoc插件
- 将对应版本的apoc插件复制到
neo4j\plugins
中 - 修改
neo4j\conf\neo4j.conf
配置文件,将dbms.security.procedures.unrestricted
的值改为apoc.*
,以允许访问所有数据 - 在
neo4j\conf
文件夹里新建apoc.conf
,并写入apoc.export.file.enabled=true
(或者使用环境变量也可以)
统计图数据库基本情况
查询元图
|
查询节点与关系总数
在数据量很大的情况下如果直接运行MATCH (n), ()-[r]-()
RETURN count(n) AS TotalNodes, count(r) AS TotalRelationships
会爆内存,所以需要使用apoc插件查询,即
|
查看前1000个节点关系情况
|
查看前100个关系名称
|