我目前正在进行一个项目,该项目旨在使用图形数据库,特别是Neo4j。我的问题涉及如何创建";关系";不同节点之间的关系,作为参考,要使用的数据是CSV格式的,在这种情况下,我将导入.CSV格式的数据,首先我们基于这些数据创建节点,然后我们继续创建不同节点之间关系。
我尝试了很多代码,但在创建节点之间的关系方面没有得到预期的结果。
我使用了以下代码:
Load csv with headers from "file:///airports.csv" as airports create (a1: Airport {label: airports.label, city: airports.city, state: airports.state})
match (n) return (n)
Load csv with headers from "file:///flights.csv" as flights create (n: Flights {flight: flights.flight, airline: flights.airline, capacity: flights.capacity})
match(n) return(n)
同时创建节点。但关系也是如此。此外,我收到了以下消息:(没有更改,没有记录(这是在执行以下代码后:
Load csv with headers from "file:///flights.csv" as flights match (a: Flights {flight: flights.flight}), (b: Airport {label: flights.arrive}) create (a) –[r : Arrivals] -> (b)
match (n) return (n)
Load csv with headers from "file:///flights.csv" as flights match (a: Flight { flight: flights. flight}), (b: Airport {label: flights. depart}) create (a) –[r : Departures] -> (b)
match (n) return (n)
为了通知您,我有两个扩展名为.csv的数据表,一个用于机场,另一个用于航班。我们应该如何建立机场和航班之间的关系?我不知道错误在哪里。
我同意jose_bacoy检查所有这些字段是否真的相互匹配。
此外。您不需要处理flights.csv三次。您可以使用MERGE语句来创建节点或匹配节点(如果该节点已经存在(。然后通过一次文件,您可以:
- 创建航班(或与其匹配(
- 创建与出发机场的关系
- 创建与到达机场的关系
LOAD CSV WITH HEADERS FROM "file" as flights
MERGE (n: Flights {flight: flights.flight, airline: flights.airline, capacity: flights.capacity})
MERGE (n)–[:Departures]->(b: Airport {label: flights.depart})
MERGE (n)-[:Arrivals]->(c: Airport {label: flights.arrive})
如果Airport节点不存在,这也将创建这些节点。