Neo4j CSV文件加载空单元格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Neo4j CSV文件加载空单元格相关的知识,希望对你有一定的参考价值。
我正在将一个基本的CSV文件加载到Neo4j数据库中,该数据库有两列 - “name”和“property”。 name列始终具有值,“property”列可以具有值或空格。我想将值与“property1”关系联系起来。
我正在使用此代码:
LOAD CSV WITH HEADERS FROM 'file:///fileName.csv' AS line
MERGE (Test_Document:A {name: line.name})
WITH line, Test_Document
FOREACH (x IN CASE WHEN line.property IS NULL THEN [] ELSE [1] END |
MERGE (Properties:B {property1: line.property})
WITH Test_Document, Properties
FOREACH (y IN CASE WHEN Properties IS NULL THEN [] ELSE [1] END |
MERGE (Test_Document)-[:property1]->(Properties))
我收到一条错误消息:
Unexpected end of input: expected whitespace, LOAD CSV, START, MATCH, UNWIND, MERGE, CREATE, SET, DELETE, REMOVE, FOREACH, WITH, CALL, RETURN or ')' (line 8, column 54 (offset: 423))
" MERGE (Test_Document)-[:property1]->(Properties))"
任何帮助,将不胜感激。
答案
您的查询有两个问题:
- 在第5行错过了一个关闭的人
Properties
不在第二个FOREACH
的范围内,因为它在之前的FOREACH
中声明(在FOREACH
中声明的别名仅限于FOREACH
条款中)
试试这个:
LOAD CSV WITH HEADERS FROM 'file:///fileName.csv' AS line
MERGE (Test_Document:A {name: line.name})
WITH line, Test_Document
FOREACH (x IN CASE WHEN line.property IS NULL THEN [] ELSE [1] END |
MERGE (Properties:B {property1: line.property})
MERGE (Test_Document)-[:property1]->(Properties)
)
另一答案
另一种方法是使用WHERE
仅在没有缺失值时才创建关系:
LOAD CSV WITH HEADERS FROM 'file:///fileName.csv' AS line
WITH line, line.name AS Name, line.property AS Property
MERGE (Test_Document:A {name: Name})
WITH Property
WHERE Property <> ""
MERGE (Properties:B {property1: Property})
MERGE (Test_Document)-[:property1]->(Properties)
仅当属性字段不为null时,才会创建链接和B节点。
以上是关于Neo4j CSV文件加载空单元格的主要内容,如果未能解决你的问题,请参考以下文章