首页 > 解决方案 > Neo4j,密码。条件合并

问题描述

我有一个非规范化的 csv 文件,它看起来像这样:

OrderId, OrderAmount, PersonId, PersonName, CarVIN, CarBrand, CarModel
1, 2500, 99, John Roe, JPN32132D2312DS, Toyota, Rav-4
2, 3200, 66, Harry Kone, NULL, NULL, NULL

如果是这样,我正在尝试创建 3 个新的实体/标签(订单、人员、汽车)以及它们之间的关系。csv 中的一行表示 Order、Person 和 Car 之间的关系。我想在这里申请一个条件。如果实体的对应id(OrderId、PersonId、CarVIN)为NULL,则不创建实体和对应关系。到目前为止,这是我的代码:

LOAD CSV WITH HEADERS
FROM 'file:///source.csv'
AS row
MERGE (o:Order {Id:row.OrderId})
    ON CREATE SET 
        o.Amount = row.OrderAmount

MERGE (p:Person {Id:row.PersonId})
    ON CREATE SET 
        p.Name = row.PersonName
        
MERGE (c:Car {Id:row.CarVIN})
    ON CREATE SET 
        c.Brand = row.carBrand,
        c.Model = row.carModel
        
MERGE (o)-[:MADE_BY]->(p)
MERGE (p)-[:ORDERED]->(c)

这里的事情是第二行:

2, 3200, 66, 哈利通, 空, 空, 空

我既不想创建汽车实体,也不想创建人与汽车之间的关系。

标签: neo4jcypher

解决方案


推荐阅读