加载时出现 Neo4j-2.2.0-M03 NotInTransactionException
Neo4j-2.2.0-M03 NotInTransactionException while loading
出于开发目的,我尝试将数据上传到 neo4j-community-2.2.0-M03。使用 shell 和密码脚本从多个 CSV 文件上传。使用与成功将数据上传到 neo4j-2.1.7 完全相同的脚本。 Neo4j 2.1.7 在 9 分钟内上传了 201589 个节点和 2163494 个边。
Neo4j-2.2.0-M03 正确上传前三种类型的节点(26k 节点)但因此无法上传最后两个文件,返回:"NotInTransactionException: The statement has been closed.".
密码命令如下:
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)[*]
从 v2.1.7 到 2.2.0-M03 在 CSV 数据上传方面有什么变化吗?这是已知错误吗?
如果您需要示例文件和脚本的附加信息,请不要犹豫。
你能不能试试看:
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)
问题已在 neo4j 2.2.0-RC01 中得到解决。 3 分钟内满载 20158 个节点和 2163494 条边,而使用 neo4j 2.1.7 则需要 9 分钟。
出于开发目的,我尝试将数据上传到 neo4j-community-2.2.0-M03。使用 shell 和密码脚本从多个 CSV 文件上传。使用与成功将数据上传到 neo4j-2.1.7 完全相同的脚本。 Neo4j 2.1.7 在 9 分钟内上传了 201589 个节点和 2163494 个边。
Neo4j-2.2.0-M03 正确上传前三种类型的节点(26k 节点)但因此无法上传最后两个文件,返回:"NotInTransactionException: The statement has been closed.".
密码命令如下:
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)[*]
从 v2.1.7 到 2.2.0-M03 在 CSV 数据上传方面有什么变化吗?这是已知错误吗?
如果您需要示例文件和脚本的附加信息,请不要犹豫。
你能不能试试看:
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)
问题已在 neo4j 2.2.0-RC01 中得到解决。 3 分钟内满载 20158 个节点和 2163494 条边,而使用 neo4j 2.1.7 则需要 9 分钟。