我有4个表格,涵盖房地产交易数据。
房子可能易手几次。在不同交易的买方和卖方表中都可能列出一个人。一笔交易可能有多个买家和/或卖家。
我的目标是创建三个标记为:People,:House和:Transaction的节点及其相关关系。即:People和:House节点将指向:Transaction节点。
我的问题是如何创建独特的:People节点,使其涉及不同的事务。
我是一个完整的新手,这是我设置的第一张(非教程)图。我尝试了使用MERGE的各种方法,但均无济于事。以下是一些入门代码-
LOAD CSV WITH HEADERS FROM "file:///...transactions.csv" AS row
CREATE (:Transaction {transactionID: row.transactionID, price: row.price, date: row.date});
LOAD CSV WITH HEADERS FROM "file:///...house.csv" AS row
CREATE (:House {transactionID: row.transactionID, address: row.address});
LOAD CSV WITH HEADERS FROM "file:///...buyers.csv" AS row
CREATE (:Person {transactionID: row.transactionID, name: row.name, dOB: row.dateOfBirth});
LOAD CSV WITH HEADERS FROM "file:///...sellers.csv" AS row
CREATE (:Person {transactionID: row.transactionID, name: row.name, dOB: row.dateOfBirth});
答案 0 :(得分:1)
这是一种方法。
创建所有Transaction
节点:
LOAD CSV WITH HEADERS FROM "file:///...transactions.csv" AS row
CREATE (:Transaction {transactionID: row.transactionID, price: row.price, date: row.date});
创建House
节点(如果尚不存在),并将每个节点连接到正确的Transaction
节点(但忽略没有transactionID
的{{1}} s行节点):
Transaction
为购买者创建LOAD CSV WITH HEADERS FROM "file:///...house.csv" AS row
MATCH (t:Transaction {transactionID: row.transactionID})
MERGE (h:House {address: row.address})
CREATE (h)<-[:HOUSE]-(t);
节点(如果尚不存在),并将每个节点连接到正确的Person
节点(但忽略没有{{ 1}}个节点):
Transaction
为卖方创建transactionID
节点(如果尚不存在),并将每个节点连接到正确的Transaction
节点(但忽略没有{{ 1}}个节点):
LOAD CSV WITH HEADERS FROM "file:///...buyers.csv" AS row
MATCH (t:Transaction {transactionID: row.transactionID})
MERGE (p:Person {name: row.name, dOB: row.dateOfBirth})
CREATE (p)<-[:BUYER]-(t);
注意:使用这种方法,多个Person
节点可以具有相同的Transaction
值(只要它们的生日不同)。您可能希望为每个transactionID
赋予唯一的Transaction
,以区别它们。