【问题标题】:neo4j Model Creation from flat CSV从平面 CSV 创建 neo4j 模型
【发布时间】:2016-03-23 19:03:02
【问题描述】:

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

我想以每个人是一个节点,每个地址是一个节点,每个 ssn 是一个节点,每个电话/替代电话是一个节点的方式导入它。这是为了模仿欺诈戒指检测的许多示例。如何加载此 CSV 文件,创建这些关系?会有重复的地址和电话号码,但如果存在重复,则应该只存在 1 个节点。

有没有办法使用标准的 LOAD CSV 来做到这一点,还是我需要在 neoj4 之外按关系分解所有这些数据?

【问题讨论】:

    标签: csv neo4j graph-databases


    【解决方案1】:

    您可以使用MERGE Cypher 命令执行此操作。 MERGE 将查找模式并在其不存在时创建它,但不会创建重复数据。

    首先,根据您的数据模型定义唯一性约束。您应该为 MERGE 语句中使用的任何 Label 属性定义唯一性约束:

    CREATE CONSTRAINT ON (p:Person) ASSERT p.personID IS UNIQUE;
    CREATE CONSTRAINT ON (phone:Phone) ASSERT phone.number IS UNIQUE;
    ...
    

    然后,使用 MERGELOAD CSV 将看起来像这样(取决于您想要的数据模型):

    LOAD CSV WITH HEADERS FROM "file:///flat_file.csv" AS row
    MERGE (p:Person {personID: row.ID})
    SET p.name = row.Name,
        p.email = row.Email,
        p.gender = row.Gender
    MERGE (phone:PhoneNumber {number: row.Phone})
    MERGE (altPhone:PhoneNumber {number: row.AltPhone})
    MERGE (ssn:SSN {number: row.SSN})
    MERGE (address:StreetAddress {address: row.StreetAddress})
    MERGE (city:City {name: row.City})
    MERGE (state:State {name: row.State})
    MERGE (p)-[:HAS_SSN]->(ssn)
    MERGE (p)-[:HAS_PHONE]->(phone)
    MERGE (p)-[:HAS_ALT_PHONE]->(altPhone)
    MERGE (p)-[:HAS_ADDRESS]->(address)
    MERGE (address)-[:IS_IN]->(city)
    MERGE (city)-[:IS_IN]->(state)
    

    【讨论】:

    • 跟随这个到(近)T,它完美地工作。非常感谢。现在我需要研究以正确的方式查询数据。我设置了几个条目来共享电话号码和地址,这应该会创建一个漂亮的小环。
    【解决方案2】:

    一般的建议是将cypher 中的cypher 语句拆分为LOAD CSV 以逐步完成您需要的操作。简单地说,您不会在单个 LOAD CSV 语句中完成所有操作。您可以创建 SSN 节点,然后创建地址节点等。

    此外,您需要查看创建索引并利用MERGE 处理可能重复的行。

    这里有一个good article,关于使用 LOAD CSV 时要考虑的事项。

    还有来自 Mark 在loading data 上的帖子。 Mark 有很多很棒的帖子,所以我鼓励你浏览他的博客。

    最后,check out the doc's 代表Merge

    【讨论】:

    • 太棒了。会做。我对 graphDB 很陌生(比如 2 天新),所以这一切都很有趣。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 2015-12-17
    • 2016-07-03
    • 1970-01-01
    • 2011-09-29
    相关资源
    最近更新 更多