加载时Neo4j-2.2.0-M03 NotInTransactionException

时间:2015-02-14 11:12:01

标签: neo4j cypher

出于开发目的,我尝试将数据上传到neo4j-community-2.2.0-M03。使用shell和cypher脚本从多个CSV文件中下载。使用与用于将数据成功上载到neo4j-2.1.7的完全相同的脚本。 Neo4j 2.1.7在9分钟内上传了201589节点和2163494个边缘。

Neo4j-2.2.0-M03正确上传前三种类型的节点(26k节点)但因此无法上传最后两个文件,返回:" NotInTransactionException:语句已关闭。"。

Cypher命令如下:

CREATE INDEX ON :Fingerprint(Code);
CREATE INDEX ON :Fingerprint(Size);
USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM 'mypath_to_file.csv' 
  as csvLine FIELDTERMINATOR '\t' 
MATCH (m:Molecule {NSC: toInt(csvLine.NSC)}) 
MERGE (f:Fingerprint {Code: toInt(csvLine.Identifier), Size: toInt(csvLine.Distance)}) 
CREATE (m)-[:hasBit {Type: 'SCFP6', Atoms: csvLine.Atoms}]-> (f);

cvs文件中的数据如下所示:

NSC Identifier  Distance    Atoms   Substructure
128 1   0   1   [*]C(=[*])[*]
128 0   0   2   [*]C
128 13  0   3   [*]=O
128 9   0   4   [*]N([*])[*]
128 3   0   5   [*][c](:[*]):[*]
128 17  0   12  [*]S[*]
128 1256995004  2   1 2 3 4 [*]N([*])C(=O)C
128 136627117   2   1 2 [*]C(=[*])C
128 1311071855  2   1 3 [*]C(=O)[*]

关于CSV数据上传,v2.1.7到2.2.0-M03有什么变化吗?这是一个已知的错误吗?

如果您需要示例文件和脚本的附加信息,请不要犹豫。

2 个答案:

答案 0 :(得分:1)

你可以尝试这样做:

LOAD CSV WITH HEADERS FROM 'mypath_to_file.csv' 
  as csvLine FIELDTERMINATOR '\t' 
RETURN count(*);

LOAD CSV WITH HEADERS FROM 'mypath_to_file.csv' 
  as csvLine FIELDTERMINATOR '\t' 
RETURN csvLine
SKIP 25900;

查看数据或解析是否已关闭?也许在解析事务期间发生异常会导致事务回滚?

我会将您的MERGE更改为:

   MERGE (f:Fingerprint {Code: toInt(csvLine.Identifier)})
     ON CREATE SET f.Size=toInt(csvLine.Distance)

答案 1 :(得分:0)

问题已在neo4j 2.2.0-RC01中解决。使用neo4j 2.1.7,在3分钟内完全加载20158节点和2163494个边缘,而9分钟则完全加载。