在Neo4j中加载CSV,字段用逗号分隔
我有一个CSV文件,看起来像这样在Neo4j中加载CSV,字段用逗号分隔,csv,neo4j,cypher,Csv,Neo4j,Cypher,我有一个CSV文件,看起来像这样 id;title;startdate;enddate;budget;description;department;supervisor;supervisor_email;member;member_email;tags 49206;Some title;29.09.2015;27.04.2016;4 billion;Something about the title;ABC;Person1;person1@aol.com;Person2, Person3;per
id;title;startdate;enddate;budget;description;department;supervisor;supervisor_email;member;member_email;tags
49206;Some title;29.09.2015;27.04.2016;4 billion;Something about the title;ABC;Person1;person1@aol.com;Person2, Person3;person2@aol.com, person3@aol.com;Some tags
8501;Some Title2;13.07.2015;15.02.2016;14 billion;Something about Title2;DEF;Person4;person4@aol.com;Person5, Person6;person5@aol.com, person6@aol.com;Title2
我写了下面的密码
LOAD CSV WITH HEADERS FROM 'file:///..../Project.csv' AS row FIELDTERMINATOR ';'
MERGE (pr:Project {projectID: row.id, title: row.title, startdate: row.startdate, enddate: row.enddate, budget: row.budget})
FOREACH (n IN row.member_email |
WITH SPLIT(row.member_email, ", ") AS memberEmails
MERGE (p:Person {email: memberEmails})
MERGE (p)-[:IS_MEMBER]->(pr)
)
正如我们可以看到的,成员电子邮件地址由逗号分隔,我希望拆分电子邮件地址,并使用电子邮件地址匹配人员,以创建项目有成员的新关系
SPLIT
和FOREACH
产生了冲突,我不知道为什么。非常感谢有人能帮助我。尝试使用:
解决方案
我认为,这将只适用于CSV中的一行数据,我使用FOREACH是因为有更多的数据行data@jorzylicious我没有完全理解你的问题。你能提供更多的细节吗?我在示例中添加了另一行。“成员电子邮件”列可以有一个或多个电子邮件地址,地址之间用逗号分隔。当我阅读row.member_电子邮件时,我将整个字段作为字符串。我想用split来分隔字符串,每次我读这一行,并使关系一致,找到了解决方案。谢谢布鲁诺@欢迎你!:)此外,我建议您与我们分享您的解决方案,回答您自己的问题,并接受它作为正确答案!谢谢<代码>加载带有标题的CSV,从'file:///..../Project.csv'作为行字段终止符';'合并(pr:Project{projectID:row.id,title:row.title,startdate:row.startdate,enddate:row.enddate,budget:row.budget})和pr,拆分(row.member_email,,,”)作为成员电子邮件将成员电子邮件作为电子邮件释放给每个人(n个成员电子邮件|合并(p:Person{email:email})合并(p)-[:IS_成员]->(pr))
LOAD CSV WITH HEADERS FROM 'file:///..../Project.csv' AS row FIELDTERMINATOR ';'
MERGE (pr:Project {projectID: row.id, title: row.title, startdate: row.startdate, enddate: row.enddate, budget: row.budget})
WITH pr, SPLIT(row.member_email, ", ") AS memberEmails
UNWIND memberEmails as email
MERGE (p:Person {email: email})
MERGE (p)-[:IS_MEMBER]->(pr)
LOAD CSV WITH HEADERS FROM 'file:///..../Project.csv' AS row FIELDTERMINATOR ';'
MERGE (pr:Project {projectID: row.id, title: row.title, startdate: row.startdate, enddate: row.enddate, budget: row.budget})
WITH pr, SPLIT(row.member_email, ", ") AS memberEmails
UNWIND memberEmails as email
FOREACH (n IN memberEmails | MERGE (p:Person {email: email}) MERGE (p)-[:IS_MEMBER]->(pr) )