首页 > 解决方案 > 如何在 NEO4J 中的连接记录中添加关系

问题描述

我有两条记录('orders' 和 'menulist')通过 orderID nad menuID [1] 与 'orderitem' 连接: https ://i.stack.imgur.com/5kF8R.png [2]:https:// /i.stack.imgur.com/sabUE.png [3]:https ://i.stack.imgur.com/0sqk1.png

我试图将每个订单项记录提升为图表中的关系我所做的是:

LOAD CSV WITH HEADERS FROM "file:///orders.csv" AS row
CREATE (n:Orders)
SET n = row

LOAD CSV WITH HEADERS FROM "file:///menulist.csv" AS row
CREATE (n:Menu)
SET n = row

CREATE INDEX FOR (m:Menu) ON (m.MenuID)
CREATE INDEX FOR (o:Orders) ON (o.OrderID)

LOAD CSV WITH HEADERS FROM "file:///orderitem.csv" AS row
MATCH  (m:Menu), (o:Orders)
WHERE m.MenuID = row.MenuID AND o.orderID = row.orderID
CREATE (o)-[oi:CONTAINS]->(m)
SET oi = row,
oi.Quantity = toInteger(row.Quantity)

但是我得到了(没有更改,没有记录),这里似乎有错误,有人可以帮忙解决吗?

标签: databaseneo4j

解决方案


这不是从 csv 创建节点的正确方法。按照此链接中的示例进行操作:https ://neo4j.com/docs/cypher-manual/current/clauses/load-csv/#load-csv-import-data-from-a-csv-file

在您的示例中,删除 Set n = row 因为它不会将 csv 中的列分配给节点中的每个属性。您需要一次定义一个属性。见下文。

 LOAD CSV WITH HEADERS FROM "file:///orders.csv" AS row
 CREATE (  :Orders {ID: row.OrderID, <and so on> , paymentID: row.PaymentID  })

另请注意,不需要 label :Orders 中的变量 n。


推荐阅读