Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j-如何组合来自多个CSV的节点和关系_Neo4j - Fatal编程技术网

Neo4j-如何组合来自多个CSV的节点和关系

Neo4j-如何组合来自多个CSV的节点和关系,neo4j,Neo4j,我有两个csv文件,其中的数据如下: "email.csv" name,email mike smith,msmith@test.com mike smith,xsmith@test.com mary smith,msmith@test.com john roberts,jroberts@test.com "phone.csv" name,phone mike smith,714-555-5555 mary smith,714-456-4567 john roberts,714-555-555

我有两个csv文件,其中的数据如下:

"email.csv"
name,email
mike smith,msmith@test.com
mike smith,xsmith@test.com
mary smith,msmith@test.com
john roberts,jroberts@test.com

"phone.csv"
name,phone
mike smith,714-555-5555
mary smith,714-456-4567
john roberts,714-555-5555
john roberts,714-456-4567
然后,当我使用此查询时:

LOAD CSV WITH HEADERS FROM 'file:///email.csv' AS email
WITH email
MERGE(e:Email_name{name:email.name})
MERGE(ee:Email_email{email:email.email})
MERGE(e)-[:has_email]->(ee);

LOAD CSV WITH HEADERS FROM 'file:///phone.csv' AS phone
WITH phone
MERGE (p:Phone_name{name:phone.name})
MERGE (pp:Phone_phone{phone:phone.phone})
MERGE (p)-[:has_phone]->(pp);

MATCH p=()-[*]->() RETURN p;
我得到的结果是:


我试图实现的是,相同名称的节点将被合并,电话和电子邮件将从相同名称的节点中产生。例如,“john roberts”名称节点的电子邮件关系和电话关系都来自该节点,并且没有分开

像这样做怎么样

为名称合并创建一个
:User
标签。您可以在以后设置电子邮件标签

LOAD CSV WITH HEADERS FROM 'file:///email.csv' AS email
WITH email
MERGE(e:User {name:email.name}) SET e:Email_name
MERGE(ee:Email_email{email:email.email})
MERGE(e)-[:has_email]->(ee);
在第二个查询中使用
:User
标签,以便
合并
将查找预先存在的名称节点(如果确实存在),而不是创建新的名称节点

LOAD CSV WITH HEADERS FROM 'file:///phone.csv' AS phone
WITH phone
MERGE (p:User {name:phone.name}) SET p:Phone_name
MERGE (pp:Phone_phone{phone:phone.phone})
MERGE (p)-[:has_phone]->(pp);

工作得很好!。谢谢