图数据库neo4j导入csv数据

1、安装环境
\quad 执行以下命令安装需要的库:

pip install py2neo
pip install neo4j

2、准备数据
\quad 在关系抽取中,我们会形成SPO三元组即:实体---->关系(属性)---->实体。我们会将三元组数据以.csv文件或.txt文件存储,之后会导入到图数据库中。在导入数据时,我们首先启动neo4j服务。
\quad csv文件数据格式:

name1,relation,name2
圣地亚哥,出生地,查尔斯·阿兰基斯
1989417,出生日期,查尔斯·阿兰基斯
张宇,歌手,离开
张宇,作曲,离开
北京吴意波影视文化工作室,出品公司,愤怒的唐僧
吴意波,导演,愤怒的唐僧
萧淑妃,妻子,李治
李治,丈夫,萧淑妃

接下来,将csv文件导入到neo4j图数据库中,代码如下:

from neo4j.v1 import GraphDatabase
import pandas as pd
#make constraint for unique node by run 'CREATE CONSTRAINT ON (node:Node) ASSERT node.name IS UNIQUE' in neo4j

driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "password"))

def add_node(tx, name1, relation, name2):

    tx.run("MERGE (a:Node {name: $name1}) "
        "MERGE (b:Node {name: $name2}) "
           "MERGE (a)-[:"+relation+"]-> (b)",
           name1=name1,name2=name2)

with driver.session() as session:
    df = pd.read_csv('relation.csv', encoding='utf-8')
    for line in df.values:
        name1 = line[0]
        relation = line[1]
        name2 = line[2]
        # print(line[0], line[1], line[2])
        try:
            session.write_transaction(add_node, name1, relation, name2)
        except Exception as e:
            print( name1, relation,name2,str(e))

\quad txt文件数据格式:

河南省示范性普通高中$$所属地区$$中国河南
赵国宝$$国籍$$中国
赵国宝$$民族$$汉族
赵国宝$$出生日期$$19238月
刘倩婷$$毕业院校$$伦敦大学经济系
刘倩婷$$代表作品$$依家有喜
刘倩婷$$主要成就$$2009年香港小姐冠军
浙江艺术职业学院$$创办时间$$20021月
浙江艺术职业学院$$类别$$公立大学
浙江艺术职业学院$$学校类型$$艺术

接下来,将txt文件导入到neo4j图数据库中,代码如下:

from neo4j.v1 import GraphDatabase
#make constraint for unique node by run 'CREATE CONSTRAINT ON (node:Node) ASSERT node.name IS UNIQUE' in neo4j

driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "password"))

def add_node(tx, name1, relation,name2):

    tx.run("MERGE (a:Node {name: $name1}) "
        "MERGE (b:Node {name: $name2}) "
           "MERGE (a)-[:"+relation+"]-> (b)",
           name1=name1,name2=name2)

with driver.session() as session:
    lines=open('./triples.txt','r').readlines()
    print(len(lines))
    pattern=''
    for i,line in enumerate(lines):
        arrays=line.split('$$')
        name1=arrays[0]
        relation=arrays[1].replace(':','').replace(':','').replace(' ','').replace(' ','').replace('【','').replace('】','')
        name2=arrays[2]
        print(str(i))
        try:
            session.write_transaction(add_node, name1, relation,name2)
        except Exception as e:
            print( name1, relation,name2,str(e))

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