图谱的最主要的存储方式,RDF和图数据库,RDF通常用于数据发布和学术上使用,图数据库更多为大数据量下的服务使用。neo4j作为图数据中使用最广泛的一种,安装简单,性能较好。
目录
neo4j安装
1. JDK安装
neo4j使用java编写的,所以依赖于JDK,至少1.8以上,随着neo4j版本的提高,部分1.8也不能完全满足需求,可以先尝试下载启动neo4j,如果java不能满足需求,就需要去下载最新的JDK版本了。JAVA SE JDK下载
可下载安装包或直接可解压的.zip版本,安装或解压后,需要配置环境变量JAVA_HOME,以及path等。
因为我服务器上安装有1.8版本的,但是运行neo4j时候报错java不能满足,所以又下载了最新的JDK安装,配置环境变量后,报错系统找不到C:\ProgramData\Oracle\Java\javapath\java.exe问题及解决方案,首先找到c:\ProgramData\Oracle\Java\javapath\java.exe 文件夹,然后删除里面的三个文件java、javaw、javaws。
2. 下载neo4j
可以在官网下载,普通使用社区版就可以,桌面版和社区办需要提交信息获取key。
推荐国内的下载地址,版本是随着官网更新的。
我下载的社区版neo4j-community-4.0.2-windows,进行解压,目录结构如下:
配置环境变量NEO4J_HOME
并在path中添加路径:%NEO4J_HOME%\bin
3. 启动neo4j
在cmd中输入启动命令:
neo4j console
如果没问题,会有如下输出:
4. 验证
在浏览器中输入http://localhost:7474/
上图中我已经修改了默认数据库,但基本就是这个页面结构。
修改默认数据库的方法为修改conf目录下的neo4j.conf文件,并在data/databases目录下增加 以数据库命名的 文件夹
修改配置文件后,需要重新启动。
neo4j批量导入数据
1. 导入方式
neo4j导入数据的方式有以下集中:
- Cypher create 语句,为每一条数据写一个create
- Cypher load csv 语句,将数据转成CSV格式,通过LOAD CSV读取数据。
- neo4j-admin import导入
- 官方提供的Java API - BatchInserter
- 大牛编写的 batch-import 工具
- neo4j-apoc load.csv + apoc.load.relationship
-
针对实际业务场景,定制化开发
此部分参考
此次我只测试了neo4j-admin import方式
2. neo4j-admin import导入数据
2.1. 处理数据
数据需要处理为csv格式的,编码为utf8,因为大家使用xls另存为csv会觉得比较方便,但是对于没有特殊字符的情况,在将csv文件再转码为utf8是没有问题的,但对于存在特殊字符的文件会出现乱码字符,建议用其他方式处理。
- 节点文件
除内容处理为csv格式为,还需要在文件中加入头,内容为各个列的属性名。
- 关系文件
除内容处理为csv格式为,还需要在文件中加入头,:START_ID为起始节点id,:END_ID为终点节点id,TYPE表示关系名称,start_id和end_id为关系属性。
注意:
1、:ID字段的内容在全部导入文件中不能有任何的重复
2、只能用于初始建库,不能向已有库中导入
处理好的数据存放在import目录下。
2.2. 导入命令
导入命令为neo4j-admin,最靠谱的方法是直接用命令帮助。
cmd进入neo4j主目录:
bin\neo4j-admin -h
bin\neo4j-admin import -h
主要参数为:bin\neo4j-admin import --database=数据库名称 --nodes import\节点文件 --relationships import\关系文件
根据帮助,输入的命令为
bin\neo4j-admin import --database=outofpoverty --nodes import\persons.csv --nodes import\prizes.csv --relationships import\win.csv
2.3. 导入数据
1. 关闭neo4j服务
2. cmd进入neo4j目录
3. 运行bin\neo4j-admin import命令
常见的错误为,数据格式问题,例如字段中有逗号会造成多列,或者ID有重复会造成数据覆盖等
控制台输出如下:
2.4. 查看数据
重新启动neo4j,访问web页面,出现上问中的启动页面,点击左侧的属性或关系,会出现相应的图像展示
初学,以上亲测,下次再试其他方式。