【问题标题】:Neo4j-2.2.0-M03 NotInTransactionException while loadingNeo4j-2.2.0-M03 NotInTransactionException 加载时
【发布时间】:2015-02-14 11:12:00
【问题描述】:

出于开发目的,我正在尝试将数据上传到 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.”。

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.2.0-M04(本周发布)的问题吗?
  • 另外,如果我提取(head)cvs行的前999行,上传工作,前1000行失败。第 1000 行是: 1163 1 0 2 []C(=[])[*] 因此与其他行相比没有什么不同。我会随时与 M04 核对。
  • 同样的问题,与 M04 相同的错误。
  • 请在github.com/neo4j/neo4j/issues/new打开一个github问题。
  • 你也可以分享你的 path/to/neo/data/graph.db/messages.log 文件吗?

标签: neo4j cypher


【解决方案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)

【讨论】:

  • 第一个命令返回 999 作为计数,这是正确的,该文件对应于原始文件的前 1000 行。该文件如上所述失败。
  • 第二个命令对整个文件(74010 行)没有返回错误。它正确地列出了每一行。
  • 在 MERGE 之外设置 f.Size 仍然失败,同时上传相同的错误消息。
【解决方案2】:

问题已在 neo4j 2.2.0-RC01 中得到解决。在 3 分钟内满载 20158 个节点和 2163494 个边,而使用 neo4j 2.1.7 则需要 9 分钟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-23
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    相关资源
    最近更新 更多