无法在 Neo4j 中从 CSV 创建链接

can't create links from CSV in Neo4j

我不知道如何在 Neo4j 中用 CSV table 创建 link。我已经阅读了手册的几个部分(match, loadCSV, etc), that free book,以及我发现的几个教程。None 其中似乎考虑了我的用例(这很奇怪,因为我认为这是一个非常简单的使用案例)。我尝试过以各种方式调整他们的代码,但似乎没有任何效果。

所以,我有三个 CSV table:母公司、子公司和父子对。我首先加载前两个 tables(并且工作正常 - 所有属性都在那里,所有信息都是正确的):

LOAD CSV FROM "file:/C:/Users/thiago.marzagao/Desktop/CSVs/children.csv" AS node
CREATE (:Children {id: node[0], name: node[1]})

LOAD CSV FROM "file:/C:/Users/thiago.marzagao/Desktop/CSVs/parents.csv" AS node 
CREATE (:Parent {id: node[0], name: node[1]})

现在,这是第三个 table 的结构:

child_id,parent_id

以下是我尝试过的一些方法:

LOAD CSV FROM "file:/C:/Users/thiago.marzagao/Desktop/CSVs/link.csv" AS rels
MATCH (FROM {Parent: rels[1]}), (TO {Children: rels[0]})
CREATE (Parent)-[:OWNS]->(Children)

这不会给我一个错误,但它 returns 零行。

LOAD CSV FROM "file:/C:/Users/thiago.marzagao/Desktop/CSVs/link.csv" AS rels
MATCH (FROM {id: rels[1]}), (TO {id: rels[0]})
CREATE (Parent)-[:OWNS]->(Children)

这不会给我一个错误,但它只是 returns 一堆空节点对。因此,它创建了 links,但不知何故它没有 link 实际节点。

LOAD CSV FROM "file:/C:/Users/thiago.marzagao/Desktop/CSVs/link.csv" AS rels
MATCH (FROM {Parent.id: rels[1]}), (TO {Children.id: rels[0]})
CREATE (Parent)-[:OWNS]->(Children)

这给我一个语法错误 (Neo.ClientError.Statement.InvalidSyntax)

我还尝试了上面代码块的几种变体,但都无济于事。那么,我做错了什么? (我正在使用 Neo4j 2.1.6,以防万一。)

在您的密码语句中,您没有引用 MATCH 中用于创建关系的相同标识符,因此他将只创建新的空节点:

看看区别:

MATCH (FROM {id: rels[1]}), (TO {id: rels[0]})

CREATE (Parent)-[:OWNS]->(Children)

应该是:

LOAD CSV FROM "file:/C:/Users/thiago.marzagao/Desktop/CSVs/link.csv" AS rels
MATCH (Parent {id: rels[1]}), (Children {id: rels[0]})
CREATE (Parent)-[:OWNS]->(Children)