无法合并节点错误:Neo4j

4

我有2个CSV文件,想将它们转换成Neo4j数据库。它们的格式如下:

first file:

name,enzyme
Aminomonas paucivorans,M1.Apa12260I
Aminomonas paucivorans,M2.Apa12260I
Bacillus cellulosilyticus,M1.BceNI
Bacillus cellulosilyticus,M2.BceNI

second file 

name,motif
Aminomonas paucivorans,GGAGNNNNNGGC
Aminomonas paucivorans,GGAGNNNNNGGC
Bacillus cellulosilyticus,CCCNNNNNCTC

正如你所看到的,共同因素是生物名称和。每个生物将有几种酶,每种酶将有1个基序。基序可以在酶之间相同。我使用以下语句创建我的数据库:

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:C:/Users/Desktop.n_e.csv" AS csvLine
MATCH (o:Organism { name: csvLine.name}),(e:Enzyme { name: csvLine.enzyme})
CREATE (o)-[:has_enzyme]->(e)

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:C:/Users/Desktop/n_m.csv" AS csvLine
MATCH (o:Organism { name: csvLine.name}),(m:Motif { name: csvLine.motif})
CREATE (o)-[:has_motif]->(m) 

然而我一直收到错误信息Cannot merge node using null property value for name (Failure when processing URL 'file:C:/Users/Desktop/n_e.csv' on line 2. No rows seem to have been committed. Note that this information might not be accurate.)。我在谷歌上搜寻了这个问题,但没有一个可行的解决方案。我确保我的CSV是“普通” csv(没有空格,只有逗号分隔),但我仍然遇到这个问题。我正在使用Neo4j的2.1.3版本。任何帮助都将不胜感激。
文件1:n_e.csv 文件2:n_m.csv

你好letsc,我也遇到了这种错误。对我有用的解决方法是我还插入了FIELDTERMINATOR ','。希望它能解决你的问题。 - Gondil
2个回答

3
  1. 更新到2.1.5版本
  2. 阅读这篇博客文章,了解如何检查数据是否被正确读入
  3. 另外,您还需要检查是否有Windows换行符或UTF 2字节文件前缀
  4. 检查是否已经建立了:Organism(name)、:Enzyme(name)和:Motif(name)的索引

总的来说,可以尝试这样做并检查输出结果:

LOAD CSV WITH HEADERS FROM "file:C:/Users/Desktop.n_e.csv" AS csvLine
RETURN csvLine
LIMIT 5

LOAD CSV WITH HEADERS FROM "file:C:/Users/Desktop.n_e.csv" AS csvLine
RETURN csvLine.name,csvLine.enzyme 
LIMIT 5

我尝试过了。它没有出现任何错误,但结果显示为“显示0个节点,0个关系”。我在问题中包含了我的.csv文件的链接。你可以看一下。据我所知,它们是正确的。 - letsc

0
在我的情况下,问题是标题行中的空格。例如,一个 CVS 文件:
Name, Surname, City
Jan, Kowalski, Gdansk

所以,Name 被成功导入了,但是 Surname 没有被识别(为 null), 逗号和 Surname 之间的空格也是如此。在去除它们后,它开始正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接