只有当唯一的Neo4j加载CSV(Neo4j Load CSV only when unique)

2019-09-26 03:42发布

如果我有CSV如下:

"route_id","service_id","trip_id","trip_headsign"
4973_3, 2, 14519396, "Bf. Tostedt"
4973_3, 2, 14519395, "Bf. Tostedt"
4973_3, 1, 14519379, "Sittensen, Schule"
4973_3, 1, 14519391, "Sittensen, Bahnhofstraße"
4973_3, 2, 14519394, "Bf. Tostedt"
4973_3, 1, 14519390, "Bf. Tostedt"
4973_3, 3, 14519381, "Bf. Tostedt"
4973_3, 4, 14519392, "Bf. Tostedt"

我想加载只有当trip_headsign独一无二的 ,因此,在上述情况下,我只会造成跳闸3次 。 我该怎么做?

我至今如下:

load csv with headers from  
 'file:///hamburg/trips.txt' as csv   
 create (t:Trip {id: csv.trip_id, service_id: csv.service_id, headsign: csv.trip_headsign}); 

但是我得到这个错误:

Node(76020) already exists with label `Trip` and property `headsign` = 'Bf. Tostedt'

我特意KEPS HEADSIGN作为唯一约束,因为我只想要每个人都只有一次存在。

Answer 1:

我现在想通了。 谢谢

load csv with headers from  
'file:///hamburg/trips.txt' as csv   
merge (t:Trip {headsign: csv.trip_headsign})
on match set t.id =  csv.trip_id
on match set t.service_id = csv.service_id


文章来源: Neo4j Load CSV only when unique
标签: neo4j cypher