【发布时间】:2016-09-02 02:03:22
【问题描述】:
我在 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
我四处搜索,只发现one other SO question关于这个错误,没有答案。其他搜索没有帮助。
我的印象是,如果没有值,那么 Neo4j 根本不会创建元素。
我认为可能无法生成节点,因为毕竟,如果没有生成节点的值,如何生成节点?所以,因为我知道没有 ID 丢失,也许我可以与 ID 和日期合并,所以 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 来到这里的,请将它们视为两者都被接受了
【问题讨论】:
-
即使我没有任何空值或空值,我也会收到此错误。
-
想通了:从 CSV 导入并且列在反引号内(例如,由于空格)并且您有外文时,您也会收到此错误。