怎么进行neo4j的数据导入
2026/6/6 22:18:03 网站建设 项目流程

一’、nodes_unified.csvrelationships_unified.csv放入 Neo4j 的 import 目录。(也就是自己的节点数据和关系数据)

一般import在C、D盘(自己的盘)里面的找到neo4j-community-2025.01.0

二、清空数据库中已有的旧数据(可选)

🚨 警告:执行此操作会永久删除所有数据,且不可逆。强烈建议在执行前先备份数据库!

如果数据库是全新的,可以跳过这一步。否则执行:

MATCH (n) DETACH DELETE n;
  • 作用:删除所有节点和关系,从头开始。


三、查看 CSV 文件的结构(确认列名)

节点文件预览:

LOAD CSV WITH HEADERS FROM 'file:///nodes_merged.csv' AS row RETURN row LIMIT 5;

关系文件预览:

LOAD CSV WITH HEADERS FROM 'file:///relationships_merged_all.csv' AS row RETURN row LIMIT 5;
  • 记下列名(例如:global_idname:LABEL:START_ID:END_ID:TYPE等)。


四、导入节点

LOAD CSV WITH HEADERS FROM 'file:///nodes_merged.csv' AS row CREATE (n:MedicalEntity { global_id: row.global_id, code: row.id, name: row.name, original_label: row[":LABEL"], category: row.category, description: row.description });

解释

  • MedicalEntity是自定义的节点标签(可改成你喜欢的名字)。

  • 列名带冒号(如:LABEL)需要用方括号访问:row[":LABEL"]

  • 可以根据需要添加更多属性(如findings,for_disease等)。

执行成功后会出现提示:Added 1091 labels, created 1091 nodes


五、创建索引(加速查询和关系匹配)

在唯一标识上创建约束(会自动建立索引):

CREATE CONSTRAINT FOR (n:MedicalEntity) REQUIRE n.global_id IS UNIQUE;

六、导入关系

LOAD CSV WITH HEADERS FROM 'file:///relationships_merged_all.csv' AS row MATCH (source:MedicalEntity {global_id: row[":START_ID"]}) MATCH (target:MedicalEntity {global_id: row[":END_ID"]}) CREATE (source)-[:RELATED { type: row[":TYPE"], stage: row.stage, outcome: row.outcome }]->(target);

解释

  • [:RELATED]是统一的关系类型(因为不能动态创建不同类型)。

  • 原始的关系类型(如TREATSPREVENTS)被保存在关系属性type中。

  • 可以根据需要添加更多关系属性(如description,source等)。

执行成功后提示:Created X relationships


七、验证数据是否正确

统计节点数量:

MATCH (n:MedicalEntity) RETURN count(n);

统计关系数量:

MATCH ()-[r:RELATED]->() RETURN count(r);

查看任意一个节点:

MATCH (n:MedicalEntity) RETURN n LIMIT 1;

查看任意一条关系:

MATCH ()-[r:RELATED]->() RETURN r LIMIT 1;

八、简单查询示例(在 Neo4j Browser 中体验图谱可视化)

  1. 查看某个中心节点(例如N000341)的所有邻居(图形化展示)

    MATCH (n:MedicalEntity {global_id: "N000341"})-[r]-(m) RETURN n, r, m LIMIT 50;
  2. 统计每种关系类型的数量

    MATCH ()-[r:RELATED]->() RETURN r.type, count(*) ORDER BY count(*) DESC;
  3. 查找所有“治疗”关系(TREATS

    MATCH (s)-[r:RELATED {type: "TREATS"}]->(t) RETURN s.name, t.name LIMIT 20;

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询