在Neo4J中,当我尝试合并时,我不断收到Neo.DatabaseError.General.UnknownError

时间:2018-06-13 13:06:08

标签: neo4j

我正在使用来自FossilWorks数据库的 opinion.csv 数据用于Synapsids。这是公共数据。 意见是不同分类群与已发表意见的已发表作品之间的联系。 意见表达了诸如“这是F. Ameghino的科学观点”之类的关系,发表于1889年的“Premièreforcourla la faune mammalogique descouchesàPyrotherium” , Astrapotherium ephebicum 是一种 Parastrapotherium 。在这个例子中, Parastrapotherium 是'父类别', Astrapotherium ephebicum 是'儿童分类'。还有其他形式的意见没有'父类别' ,所以这个值是可选的。文件是使用iso-8859-1字符集,所以它首先使用

转换

iconv -f iso-8859-1 -t utf-8 references.csv> references.txt

使用Neo4j Desktop(版本:1.1.5),我可以加载引用并将其链接到子类群:

USING PERIODIC COMMIT
load csv with headers from "file:///opinions.txt" as row
FIELDTERMINATOR "|"
with row where row.status = "belongs to"
match (ref:Reference {reference_no:toInteger(row.reference_no)})
match (child:Taxon {taxon_no:toInteger(row.child_no)})
merge (st:Subtaxon {opinion_no:toInteger(row.opinion_no)})
FOREACH(ignoreMe IN CASE WHEN trim(row.pages) = "" then [] else [1] end | SET st.pages = row.pages)
FOREACH(ignoreMe IN CASE WHEN trim(row.comments) = "" then [] else [1] end | SET st.comments = row.comments)
merge (ref)-[:DESCRIBES]->(st)
merge (st)-[:CHILD]->(child);

但是,我无法添加父节点而没有获得相当不透明的“Neo.DatabaseError.General.UnknownError”。这是产生错误的最简单的查询:

USING PERIODIC COMMIT
load csv with headers from "file:///opinions.txt" as row
FIELDTERMINATOR "|"
with row where row.status = "belongs to" and row.parent_no is not null
match (parent:Taxon {taxon_no:toInteger(row.parent_no)})
match (st:Subtaxon {opinion_no:toInteger(row.opinion_no)})
merge (st)-[:PARENT]->(parent);

我使用 csvstat 来验证parent_no是否为整数。我不确定如何有效地调试此错误。任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

Logisima有正确的线索。我从3.4.0更新到3.4.1,我能够加载数据。所以这看起来是一个在3.4.1中解决的错误