使用py2neo将csv导入neo4j

一、neo4j基本使用

创建节点:创建一个标签类型为“大学”的节点,该节点具有一个name属性,属性值是“清华大学”

create(:大学{name:"清华大学"})

使用py2neo将csv导入neo4j_第1张图片

 同样的

create(:学院{name:"计算机学院"})

使用py2neo将csv导入neo4j_第2张图片

 创建一段由大学到学院的关系

match(p1:`大学`),(p2:`学院`) create (p1)-[r:包含]->(p2)

 使用py2neo将csv导入neo4j_第3张图片

 二、使用py2neo导入csv

因为手动在neo4j中导入,导致关系名只有一种,很不方便,参见文档

Patterns - Cypher Manual (neo4j.com)

 所以在这里用python进行导入

import csv  # 导入csv文件
import py2neo  # 导入py2neo库
from py2neo import Graph, Node, Relationship, NodeMatcher

g = Graph('http://localhost:7474', user='neo4j', password='xxxxx', name='neo4j') #这里是你自己的用户名和密码
#g.delete_all()  # 清除neo4j中原有的结点等所有信息

with open('D:/neo4j-community-5.3.0/import/test_demo1_re.csv', 'r', encoding='utf-8') as f: # 文件路径
    next(f) #跳过第一行属性名
    for line in f.readlines():
        rela_array = line.strip("\n").split(",")
        print(rela_array)
        g.run("merge (p:person{name: '%s'})" % (rela_array[0]))
        g.run("merge (p:person{name: '%s'})" % (rela_array[1]))
        g.run(
            "MATCH(e1: person{name:'%s'}), (e2: person{name:'%s'}) CREATE(e1)-[r:%s{relation: '%s'}]->(e2) RETURN r" % (rela_array[0], rela_array[1], rela_array[2], rela_array[2])
        )

这是数据格式(编码一定要保存为utf-8): 

使用py2neo将csv导入neo4j_第4张图片

效果图:

使用py2neo将csv导入neo4j_第5张图片

 

 

你可能感兴趣的:(知识图谱,neo4j)