我在把Cypher文件加载到Windows10的Neo4J中遇到了一些困难。这个文件是一个175Mb的.cql文件,里面用Cypher语言填充了超过一百万行的节点和边(用分号分隔) -- CREATE node之类的东西。对于较小的项目,我一直在web浏览器中使用APOC命令:
call apoc.cypher.runFile('file:///<file path>')但是对于million+查询文件来说,这太慢了。我已经为节点创建了索引,目前正在通过一个命令运行它:
neo4j-shell -file <file path> -path localhost但这仍然很慢。我在想,有没有什么方法可以加快入口率呢?
此外,请注意,我使用的是最新的ONGDB构建,而不是直接的Neo4J;我不相信这会有任何实质性的不同。
发布于 2019-01-22 22:56:19
我最终使用cypher-shell摄取了它。它仍然很慢,但至少它完成了。使用它需要先打开一个Neo4J控制台,然后在第二个命令行中使用:
type <filepath>\data.cql | bin\cypher-shell.bat -a localhost -u <user> -p <password> --fail-at-end这在Windows10上是有效的,尽管它确实需要一段时间。
发布于 2019-01-17 04:50:25
如果您的非常大的CQL文件的目的仅仅是摄取数据,那么纯粹使用Cypher将会非常慢(甚至可能导致内存不足错误)。
如果您正在摄取一个新的neo4j DB,那么您应该考虑重构其中的数据,并使用import command of neo4j-admin工具来高效地摄取数据。
如果您正在摄取到现有的DB中,则应该考虑将数据和逻辑重构出CQL文件并使用LOAD CSV。
发布于 2019-11-21 04:33:33
在事务外部运行查询时,neo4j will automatically start and commit a separate transaction for every query。您可以通过在开始时启动一个事务,并每隔几千个查询提交和启动一个新事务来加快速度(内存使用量将随着事务大小的增加而增加,因此这是事务大小的限制因素)。
示例queries.cypher (事务大小为3):
:begin
CREATE(n:PERSON { name: "Homer Simpson" })
CREATE(n:PERSON { name: "Marge Simpson" })
CREATE(n:PERSON { name: "Abe Simpson" })
:commit
:begin
CREATE(n:PERSON { name: "Bart Simpson" })
CREATE(n:PERSON { name: "Lisa Simpson" })
CREATE(n:PERSON { name: "Maggie Simpson" })
:commit然后像往常一样运行cypher-shell < queries.cypher。
https://stackoverflow.com/questions/54224244
复制相似问题