neo4j

时间:2017-06-09 09:26:25

标签: neo4j cypher

我正在尝试使用以下命令从csv文件添加示例数据库中现有员工节点之间的关系:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 
'file:///newmsg1.csv' AS line 
WITH line
MATCH (e:Employee {mail: line.fromemail}), (b:Employee {mail: line.toemail})
CREATE (e)-[m:Message]->(b);

我面临的问题是,虽然csv文件中只有 71253 条目,其中每个条目都有一个" fromemail"和" toemail", 我得到" 创建240643关系,在506170 ms之后完成。"作为输出。我无法理解我做错了什么。请帮助我。提前谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用MERGE来确保关系的唯一性:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 
'file:///newmsg1.csv' AS line 
WITH line
MATCH (e:Employee {mail: line.fromemail}), (b:Employee {mail: line.toemail})
MERGE (e)-[m:Message]->(b);

答案 1 :(得分:0)

尝试将您的创建更改为CREATE UNIQUE

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM 
'file:///newmsg1.csv' AS line 
WITH line
MATCH (e:Employee {mail: line.fromemail}), (b:Employee {mail: line.toemail})
CREATE UNIQUE (e)-[m:Message]->(b);

来自docs

  

CREATE UNIQUE位于MATCHCREATE的中间 - 它会匹配   它能做什么,并创造缺失的东西。 CREATE UNIQUE将永远   使图表的变化最小 - 如果它可以使用的部分   现有的图表,它会。