首页 > 解决方案 > 我可以使用 apoc.periodic.updates 来返回查询输出吗?

问题描述

我有一个查询,它从 csv 文件中读取一组 ID,在数据库中搜索这些节点并将结果写入 csv。我试图让这个查询尽快运行,并且想知道我是否可以使用以下方法并行化读取操作:http apoc.periodic.iterate: //neo4j-contrib.github.io/neo4j-apoc-procedures/3.5/cypher-execution/提交批处理/

我已经编写了一个查询来满足我的需要,但实际上我只是想知道如何尽快运行这个查询。

这是查询的当前版本:

CALL apoc.export.csv.query('CALL apoc.load.csv(\'file:///edge.csv\') YIELD map as edge
MATCH (n:paper)
WHERE n.paper_id = edge.`From` OR n.paper_id = edge.`To`
RETURN n.paper_title',
'node.csv', {});

此查询创建了node.csv我想要的结果文件,但edge.csv随着大小的增加,操作可能会大大减慢。

我希望做的是这样的:

CALL apoc.periodic.iterate(
'LOAD CSV WITH HEADERS FROM \'file:///edge.csv\' as row RETURN row',
'CALL apoc.export.csv.query(\'MATCH (n:paper) WHERE n.paper_id = row.`From` OR n.paper_id = row.`To` RETURN DISTINCT(n.paper_id) AS paper_id\', \'nodePar.csv\', {})'
, {batchSize:10, iterateList:true, parallel:true, failedParams:0})
;

此查询将运行,但除了以下消息外不产生任何输出:

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| batches | total  | timeTaken | committedOperations | failedOperations | failedBatches | retries | errorMessages | batch                                                   | operations                                                | wasTerminated | failedParams |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 14463   | 144629 | 0         | 144629              | 0                | 0             | 0       | {}            | {total: 14463, committed: 14463, failed: 0, errors: {}} | {total: 144629, committed: 144629, failed: 0, errors: {}} | FALSE         | {}           |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

我的主要问题是:可以以这种方式使用 apoc.periodic.iterate 来加速此查询,如果可以,如何?

然后或者,随着文件大小的增长,是否有任何其他方法可以加速此查询edge.csv

标签: neo4jcypherneo4j-apoc

解决方案


推荐阅读