我有一个csv文件中的一列,看起来像这样:
我正在使用此代码来测试日期分割的工作原理:
LOAD CSV WITH HEADERS FROM
'file:///..some_csv.csv' AS line
WITH
SPLIT(line.date_of_birth, '/') AS date_of_birth
return date_of_birth;
这段代码块运行良好并返回了我所期望的结果,即每个日期的三个值的集合,或者如果没有日期,则可能是
null
(例如:)。[4, 5, 1971]
[0, 0, 2003]
[0, 0, 2005]
. . .
null
null
. . .
我的问题是,这些创建的空值问题是什么,为什么在存在空值时我不能执行MERGE操作?
LOAD CSV WITH HEADERS FROM
'file:///..some_csv.csv' AS line
WITH
SPLIT(line.date_of_birth, '/') AS date_of_birth, line
MERGE (p:Person {
date_of_birth: date_of_birth
});
上面的这个块给了我一个错误:
Cannot merge node using null property value for date_of_birth
我搜索过,只发现一个关于该错误的SO问题,但没有答案。其他搜索也没有帮助。 我原本认为如果没有值,那么Neo4j就不会创建元素。我想也许不能生成节点,因为如果没有值生成节点怎么可能呢?所以,既然我知道没有丢失ID,也许我可以使用ID和日期进行MERGE,这样Neo4j总是能看到一个值。但是这段代码也没有更好(相同的错误消息)。
LOAD CSV WITH HEADERS FROM
'file:///..some_csv.csv' AS line
WITH
SPLIT(line.date_of_birth, '/') AS date_of_birth, line
MERGE (p:Person {
ID: line.ID
,date_of_birth: date_of_birth
});
我的下一个想法是,也许出现这个错误是因为我试图在斜杠上分割一个空值?也许整个问题都是由于“SPLIT
”引起的。
但遗憾的是,当简化为以下内容时,仍然出现相同的错误:
LOAD CSV WITH HEADERS FROM
'file:///..some_csv.csv' AS line
WITH line
MERGE (p:Person {
subject_person_id: line.subject_person_id
,date_of_birth: line.date_of_birth
});
我其实不太理解错误的原因。感谢您查看这个问题。
编辑
@stdob--和@cybersam都给出了同样出色的回答,如果您通过Google来到这里,请将他们都视为已被接受。