neo4j从平面CSV创建模型

时间:2016-03-23 19:03:03

标签: csv neo4j graph-databases

我正在做一个概念证明,需要一些指导。我有一个包含以下属性的平面文件:ID,名称,电子邮件,性别,街道地址,城市,州,邮编,电话,AltPhone,SSN(所有虚假数据。)

我想以每个Person都是节点的方式导入它,每个地址都是一个节点,每个ssn是一个节点,每个phone / altphone都是一个节点。这是为了模仿许多欺诈环检测的例子。如何加载此CSV文件,创建这些关系?将存在重复的地址和电话号码,但存在重复的地方,只应存在1个节点。

有没有办法使用标准的LOAD CSV执行此操作,还是需要在neoj4之外关联地中断所有这些数据?

2 个答案:

答案 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。马克有很多很棒的帖子,所以我鼓励你去博客。

最后,MergeQDialogButtonBox