【发布时间】:2020-03-15 09:28:37
【问题描述】:
我卡在 Neo4j 中的命令中(我是一个新手)来创建一个基于 CSV 的数据库,如下所示:
国家,姓名1,姓名2,姓名3,影响
法国,约翰,皮特,乔希,2
意大利,皮特,贝佩,胡安,3
美国,乔什,胡安,皮特,1
西班牙,胡安,约翰,,2
当我尝试为每个人创建一个节点(NameX)设置名称列之间的关系添加影响和国家的标签时,它失败了,因为有空名称。
如何做到这一点?
谢谢
更新:
LOAD CSV WITH HEADERS FROM 'file:///diag.csv' AS row FIELDTERMINATOR ';'
MERGE (c:Country{name:row.Country})
WITH CASE row.name1 WHEN NULL THEN [] WHEN '' THEN [] ELSE [row.name1] END as
name1List ,c
WITH CASE row.name2 WHEN NULL THEN [] WHEN '' THEN [] ELSE [row.name2] END as
name2List ,c
WITH CASE row.name3 WHEN NULL THEN [] WHEN '' THEN [] ELSE [row.name3] END as
name3List ,c
FOREACH (x IN name1List | MERGE (n:Node{name : x} )
MERGE (n)-[:REL_TYPE]->(c)
)
FOREACH (x IN name2List | MERGE (n:Node{name : x} )
MERGE (n)-[:REL_TYPE]->(c)
)
FOREACH (x IN name3List | MERGE (n:Node{name : x} )
MERGE (n)-[:REL_TYPE]->(c)
)
RETURN SUM(1)
得到错误:
变量
row未定义(第 4 行,第 11 列(偏移量:209)) "WITH CASE row.name2 WHEN NULL THEN [] WHEN '' THEN [] ELSE [row.name2] END as >name2List ,c"
【问题讨论】:
-
如果您可以共享图结构,我可以编写完整的查询。但是现在,我添加了可以用来解决此类问题的技巧
-
感谢@TheTeacher,我使用初始命令 LOAD CSV WITH HEADERS FROM 'file:///diag.csv' AS row FIELDTERMINATOR ';' 尝试了您的解决方案,但问题是三个中的任何一个名称字段可能为空,不仅是 Name3,因此我收到此错误:Cannot merge node using null property value for name
-
您必须在所有字段上应用案例或共享您的图表结构,如我之前所说,。
-
我按照发布的更新代码所示进行了尝试,但仍然收到有关变量“行”的错误。有什么想法吗?
-
嘿,更新了我对您的查询的回答..您需要在 WITH 运算符中传递行