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

时间:2014-08-28 20:27:49

标签: csv neo4j cypher

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

我真的无法弄清楚如何在密码中完成这项工作。我唯一的选择是将每个类型的一个csv文件拆分成一个csv文件并运行不同的密码?

1 个答案:

答案 0 :(得分:5)

document on conditional statements有帮助。

以下是基于列值加载的简单示例:

数据: A,B 福特汽车 雪佛兰,卡车 马自达,汽车 GMC,卡车 F150,卡车

Cypher代码:

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}))

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