当前位置: 首页 > 知识库问答 >
问题:

在Neo4j中从csv加载节点时有条件地创建节点和关系

鲍飞星
2023-03-14

我有一个csv格式的数据集。其中一个字段是类型,类似于枚举。基于此类型,我需要在使用csv LOAD加载数据时创建不同的类型、节点和关系。您可以在csv中调用具有定义子类型的属性的超级类型的行。

我真的不知道如何在Cypher中做到这一点。我唯一的选择是将一个csv文件拆分为每种类型的csv文件,并运行不同的密码吗?

共有1个答案

狄承望
2023-03-14

这篇关于条件语句的文档很有帮助。

下面是一个基于列值加载的简单示例:

数据:a、b福特,轿车雪佛兰,卡车马自达,轿车GMC,卡车F150,卡车

load csv with headers from "file:/testfile.csv" as row
FOREACH(ignoreMe IN CASE WHEN trim(row.b) = "truck" THEN [1] ELSE [] END | MERGE (p:Truck {vehicleType: row.a}))
FOREACH(ignoreMe IN CASE WHEN trim(row.b) = "car" THEN [1] ELSE [] END | MERGE (p:Car {vehicleType: row.a}))

完成后,将创建不同类型的节点。

 类似资料:
  • 我有一个csv格式的数据集。其中一个字段是“elem_type”。基于此类型,我需要创建不同的类型节点,并在使用csv load加载数据时,根据“elem_type”为csv的“列”赋予不同的名称,有什么方法可以做到这一点吗? 我的csv没有标头,数据如下所示: 基于第一个colmuns,即我的“elem_type”,我要加载数据并定义3种类型的节点(Person,Car,Boat)

  • 我希望它创建每个节点(而不是在已经存在具有相同ID的节点时创建新节点),并创建每个关系(在CSV中指定具有多个关系的节点中有多个关系from/to节点)。 实际发生的情况:它似乎创建了所有唯一的节点。它还创建了节点之间的关系,但它只为每个节点设置一个关系,而不考虑与多个其他节点进行通信的一些节点。 我很困惑,因为我的理解是,如果在数据库中还没有出现关系,它将创建关系,所以我认为它将创建CSV中指定

  • 请有人给我指个正确的方向。

  • 我需要创建一个新的A类节点,它与User节点有关系: 现在,假设我们有新节点A的以下数据: 我试图创建节点A,使新节点A与具有“id”:4和“nodeId”:“0002-0002”(唯一节点标识符)的用户的(现有)节点之间具有关系,但用户节点将字段“name”和“firstName”更新为。 我正在使用GraphRespository代理创建它: 有没有办法不进行此更新,只与用户节点建立关系?