前几天做数据图谱作业时用到了neo4j,但在导入数据时总出现各种各样的错误,故在此总结如下:
首先要知道,导入neo4j的数据文件须分为两类,一类为节点文件,一类为关系文件。
node文件的基本格式如下
必须有:ID这一列!必须有:ID这一列!必须有:ID这一列!
如果没有的话在创建关系时就会报错说id域内没有值。
:LABEL为可选项,不过最好也选,其规定的是这种节点在图形化界面中的类别,可以通过这个值筛选需要显示的节点类型
name规定的是标签在显示时的值,如图
其他的列就可以自己添加啦,可以为结点添加一个或多个其他的属性
relationship的基本格式如下
其中:START_ID 和 :END_ID是必须要有的。表示一个从start_id指向end_id的关系
;TYPE的作用可以类比node文件中的的:LABEL
其他列就可以自己添加啦
示例语句
在导入前请先确保neo4j处于停止活动的状态。可以输入如下语句将其停止
打开cmd,cd到neo4j-community安装路径的bin文件夹下,再输入如下导入语句。
neo4j-admin import --database=graph.db
--nodes " D:\neo4j-community-3.5.6\neo4j-community-3.5.6\import\big_V_header.csv,D:\neo4j-community-3.5.6\neo4j-community-3.5.6\import\big_V.csv "
--nodes " D:\neo4j-community-3.5.6\neo4j-community-3.5.6\import\labels_header.csv,D:\neo4j-community-3.5.6\neo4j-community-3.5.6\import\labels.csv "
--relationships “D:\neo4j-community-3.5.6\neo4j-community-3.5.6\import\p_l_relation_header.csv,D:\neo4j-community-3.5.6\neo4j-community-3.5.6\import\p_l_relation.csv”
--relationships “D:\neo4j-community-3.5.6\neo4j-community-3.5.6\import\p_p_relation_header.csv,D:\neo4j-community-3.5.6\neo4j-community-3.5.6\import\p_p_relation.csv”
语句分块详解
neo4j-admin import --database=graph.db
此语句为neo4j创建数据库时使用的数据导入语句,优点为导入速度极快,几秒内就能完成,缺点为该种方式只能用来导入一个全新的数据库,也就是建库的时候来使用。该种导入方式的数据来源是csv文件。graph.db为需要导入的数据库的名称。
--nodes " D:\neo4j-community-3.5.6\neo4j-community-3.5.6\import\big_V_header.csv,D:\neo4j-community-3.5.6\neo4j-community-3.5.6\import\big_V.csv "
此语段导入的文件为结点,即node文件。在导入时要注意几个点:
1.导入前将数据放到neo4j-community-3.5.6的import文件夹下
2.导入文件时最好用绝对路径
3.一种节点的header文件和数据文件可以写在一个csv文件中,也可以像我一样分成两个csv,在同一个nodes语句块中上传
4.记得用双引号把文件路径括起来,但同一个nodes语句块中的两个csv不用各自括
5.nodes,别忘加s
--relationships “D:\neo4j-community-3.5.6\neo4j-community-3.5.6\import\p_p_relation_header.csv,D:\neo4j-community-3.5.6\neo4j-community-3.5.6\import\p_p_relation.csv”
此语段导入的文件为关系,即relationship文件,注意事项与node文件相同。
其他注意事项:
1.不要在导入语句中加回车
2.每个--nodes和--relationships前要加空格
3.如果某次导入因为错误原因导致导入一半停止,在解决错误之后记得到neo4j-community安装路径下data/databases,把graph.db中的文件清空(因为此语句为数据库初始化语句,graph.db中已有数据的话此语句将不能使用)
结果是这样就证明导入完成啦