csv文件数据直接导入neo4j构建知识图谱

from py2neo import Node, Relationship, PropertyDict, Graph
import csv

g = Graph("", username="neo4j", password="neo4j123")
with open(r'', 'r', encoding='gbk') as r:
    reader = csv.reader(r)
    for item in reader:
        if reader.line_num == 1:
            continue
        node = Node("jd", name=item[0], lat_lng=item[1], desc=item[2])
        g.merge(node, "jd", "name")
from py2neo import Node, Relationship, Graph
import csv

g = Graph("xxx", username="neo4j", password="neo4j123")
with open(r'xxx', 'r', encoding='utf-8') as r:
    reader = csv.reader(r)
    for item in reader:
        # print(item)
        start_node = Node("Person", name=item[0])
        end_node = Node("Person", name=item[1])
        Relation = Relationship(start_node, item[2], end_node)
        g.merge(start_node, "Person", "name")
        g.merge(end_node, "Person", "name")
        g.merge(Relation, "Person", "name")

### 如何将CSV文件导入Neo4j构建知识图谱 #### 使用Neo4j Desktop或Browser导入CSV数据 在Windows环境下,可以通过Neo4j Browser完成CSV数据导入。启动Neo4j服务后,在浏览器中访问`http://localhost:7687`,默认用户名和密码均为`neo4j`[^1]。登录成功后,可以在左侧菜单栏找到数据库选项,选择目标数据库(如`neo4j`),随后通过Cypher查询语句加载节点和关系。 以下是具体的导入流程: 1. 将准备好的CSV文件放置于Neo4j安装目录下的`import`文件夹中。 2. 执行以下Cypher命令创建索引以便加速查询性能: ```cypher CREATE INDEX FOR (node:LabelName) ON (node.property); ``` 3. 利用`LOAD CSV`语法读取CSV文件中的数据并映射到图结构中。例如: ```cypher LOAD CSV WITH HEADERS FROM "file:///entity1.csv" AS line CREATE (:Entity {id: toInteger(line.id), name: line.name}); LOAD CSV WITH HEADERS FROM "file:///relation.csv" AS rel MATCH (a:Entity {id: toInteger(rel.start_id)}) MATCH (b:Entity {id: toInteger(rel.end_id)}) CREATE (a)-[:REL_TYPE]->(b); ``` #### 命令行工具批量导入大体量数据集 对于大规模数据处理场景,则推荐采用`neo4j-admin import`命令实现高效批量化载入操作。此方法适用于全新初始化状态下的实例部署前准备工作阶段。下面给出Linux平台上的典型调用范例: ```bash sudo ./neo4j-admin import \ --database=demo.db \ --nodes=/path/to/nodes_file_1.csv,/path/to/nodes_file_2.csv,... \ --relationships=/path/to/rels_file.csv \ --force=true; ``` 注意替换实际路径参数以及设置合适的分隔符配置项来适配不同格式需求[^2]。 #### Python脚本自动化方案 除了直接运用原生功能外,还可以借助第三方库Py2Neo编写自定义逻辑进一步简化开发难度。下面展示了一个简单例子用于演示如何利用Python程序动态生成指定模式的知识网络模型[^3]: ```python from py2neo import Graph, Node, Relationship import csv def create_nodes_and_relationships(graph_uri, username, password, filepath): graph = Graph(uri=graph_uri,user=username,password=password) with open(filepath,'r',encoding='utf-8')as csvfile: reader = csv.DictReader(csvfile) for row in reader: person_node = Node("Person", name=row['name'], level=row['level'], major=row['major'], univ=row['university']) university_node = Node("University",name=row['university']) department_node = Node("Department",name=row['department']) study_at_rel =Relationship(person_node,"STUDY_AT",university_node) belong_to_dept_rel =Relationship(department_node,"BELONGS_TO",university_node) major_in_field_rel =Relationship(person_node,"MAJOR_IN",department_node) tx = graph.begin() tx.merge(university_node,on_create={"name":row["university"]}) tx.merge(department_node,on_create={"name":row["department"]}) tx.create(study_at_rel) tx.create(belong_to_dept_rel) tx.commit() if __name__ == "__main__": uri = "bolt://localhost:7687" user ="your_username_here" pwd="your_password_here" file_path="/absolute/path/to/data.csv" create_nodes_and_relationships(uri,user,pwd,file_path) ``` 以上代码片段展示了如何基于给定模板构造实体间关联的同时确保唯一性约束得以满足从而避免冗余记录产生影响最终呈现效果的质量[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值