【问题标题】:Creating relationship Neo4J during import if value is 1如果值为 1,则在导入期间创建关系 Neo4J
【发布时间】:2017-05-18 15:09:14
【问题描述】:

大家好!

我的任务是将我们的 RDBM 转换为图形数据库以进行测试。我正在使用 Neo4J,并且已成功将各种表导入到相应的节点中。但是,当涉及到部门节点时,我遇到了一些小问题。某些部门与特定部门合作。在 RDBMS 模型中,这是一个简单的列,名为:Is_Partner,因为这个数据库最初是在考虑一个合作伙伴的情况下设置的(因此整体:转移到图形数据库的事情)。

我需要做的是匹配 Is_Partner 值为 1 的所有部门,并将关系分配给 Is_Partner 中值为 1 的合作伙伴,并将其分配给特定合作伙伴(边缘:ABBR,值:HR) .我已经编写了脚本,但它告诉我它是成功的,但是进行了 0 次编辑......

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///Department.csv" AS row
MATCH (partner:Department {DepartmentID: row.DepartmentID})
WHERE row.IS_PARTNER = "1"
MERGE (partner)-[:IS_PARTNER_OF]->(Department{ABBR: 'HR'});

我是图形数据库的新手,但我非常了解关系数据库。任何帮助将不胜感激。

感谢您的宝贵时间,

吉姆·佩里

【问题讨论】:

  • 这是对的吗? MATCH (partner:Department {DepartmentID: row.DepartmentID})。为什么要将 :Department 分配给名为 partner 的变量?

标签: database import neo4j cypher


【解决方案1】:

您的查询存在一些问题。如果要过滤 CSV,请使用带有 WHERE 过滤器的 WITH 语句。你也想分别MERGE HR部门节点,然后分别MERGE关系。

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///Department.csv" AS row
WITH row  WHERE row.IS_PARTNER = "1"
MATCH (partner:Department {DepartmentID: row.DepartmentID})
MERGE (dept:Department{ABBR: 'HR'}))
MERGE (partner)-[:IS_PARTNER_OF]->(dept);

如果它仍然返回 no results/changes,请检查您的 MATCH 语句是否返回任何内容,因为这通常是问题所在。

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///Department.csv" AS row
WITH row  WHERE row.IS_PARTNER = "1"
MATCH (partner:Department {DepartmentID: row.DepartmentID})
RETURN partner

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 2021-04-02
    • 1970-01-01
    相关资源
    最近更新 更多