我正在做一个概念证明,需要一些指导。我有一个包含以下属性的平面文件:ID,名称,电子邮件,性别,街道地址,城市,州,邮编,电话,AltPhone,SSN(所有虚假数据。)
我想以每个Person都是节点的方式导入它,每个地址都是一个节点,每个ssn是一个节点,每个phone / altphone都是一个节点。这是为了模仿许多欺诈环检测的例子。如何加载此CSV文件,创建这些关系?将存在重复的地址和电话号码,但存在重复的地方,只应存在1个节点。
有没有办法使用标准的LOAD CSV执行此操作,还是需要在neoj4之外关联地中断所有这些数据?
答案 0 :(得分:4)
您可以使用MERGE
Cypher命令执行此操作。如果模式不存在,LEDR(9 downto 8) <= "00";
会查找模式并创建模式,但不会创建重复数据。
首先,根据您的数据模型定义唯一性约束。您应该为MERGE语句中使用的任何Label属性定义唯一性约束:
MERGE
然后,将CREATE CONSTRAINT ON (p:Person) ASSERT p.personID IS UNIQUE;
CREATE CONSTRAINT ON (phone:Phone) ASSERT phone.number IS UNIQUE;
...
与MERGE
一起使用会看起来像这样(取决于您想要的数据模型):
LOAD CSV
答案 1 :(得分:2)
一般建议是分解cypher
中的LOAD CSV
语句,以完成您需要的步骤。简单地说,你不会在一个LOAD CSV
语句中做所有事情。您可以创建SSN节点,然后创建地址节点等。
此外,您将需要查看创建索引并对可能重复的行使用MERGE
。
以下是使用LOAD CSV时要考虑的事项的good article。
Mark的帖子loading data。马克有很多很棒的帖子,所以我鼓励你去博客。
最后,Merge
为QDialogButtonBox
。