目录

neo4j随笔-将csv文件导入知识图谱

neo4j随笔-将csv文件导入知识图谱


导入前的准备

我有两个csv文件

https://i-blog.csdnimg.cn/direct/d981531d0ca3422dba5ff38a84042b6a.png

nodes1.1.csv存放节点信息,用记事本打开,能正常显示,且编码为UTF-8,就可以使用。 虽然在excel表打开是乱码

https://i-blog.csdnimg.cn/direct/0c15c1704cf84cc3bf6811474caaa55c.png

relations1.1.csv存放节点信息,用记事本打开,能正常显示,且编码为UTF-8,就可以使用。 虽然在excel表打开是乱码

https://i-blog.csdnimg.cn/direct/e07c7e21f922449ab311b296d6f884b2.png

然后将这两个csv文件放到neo4j的import目录下(linux的neo4j在/var/lib/neo4j/import)

https://i-blog.csdnimg.cn/direct/70ba0374ce664dd9aa992622e73b918f.png

因为我们还要通过节点信息动态生成节点标签,也要通过关系信息动态生成关系标签,所以需要安装apoc插件。

可以看这位博主的博客:

导入csv文件

插件安装完毕后,就可以打开网页版neo4j

https://i-blog.csdnimg.cn/direct/311b24e21f8b44c588a57654ad6e5259.png

执行Cypher语句

导入nodes1.1.csv并动态为节点添加标签

LOAD CSV WITH HEADERS FROM 'file:///nodes1.1.csv' AS row
MERGE (n:Node {id: row.id})
SET n.name = row.name, 
    n.type = row.type, 
    n.description = row.description, 
    n.expression = row.expression
WITH n, row
CALL apoc.create.addLabels(n, [row.type]) YIELD node  // 动态为节点添加标签
RETURN node;

导入relations1.1.csv并动态为关系添加标签

LOAD CSV WITH HEADERS FROM 'file:///relations1.1.csv' AS row
MATCH (source:Node {id: row.source_id})
MATCH (target:Node {id: row.target_id})
CALL apoc.merge.relationship(source, row.relation, {}, {}, target) YIELD rel
RETURN rel;

https://i-blog.csdnimg.cn/direct/899273d2673640cf804b5bf1dd9031c7.png

结果

顺利导入

https://i-blog.csdnimg.cn/direct/95ae85be7f9440628ea4e0c931892b2b.png