首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Neo4J中加载大型密码文件

在Neo4J中加载大型密码文件
EN

Stack Overflow用户
提问于 2019-01-17 03:45:13
回答 3查看 752关注 0票数 1

我在把Cypher文件加载到Windows10的Neo4J中遇到了一些困难。这个文件是一个175Mb的.cql文件,里面用Cypher语言填充了超过一百万行的节点和边(用分号分隔) -- CREATE node之类的东西。对于较小的项目,我一直在web浏览器中使用APOC命令:

代码语言:javascript
复制
call apoc.cypher.runFile('file:///<file path>')

但是对于million+查询文件来说,这太慢了。我已经为节点创建了索引,目前正在通过一个命令运行它:

代码语言:javascript
复制
neo4j-shell -file <file path> -path localhost

但这仍然很慢。我在想,有没有什么方法可以加快入口率呢?

此外,请注意,我使用的是最新的ONGDB构建,而不是直接的Neo4J;我不相信这会有任何实质性的不同。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-22 22:56:19

我最终使用cypher-shell摄取了它。它仍然很慢,但至少它完成了。使用它需要先打开一个Neo4J控制台,然后在第二个命令行中使用:

代码语言:javascript
复制
type <filepath>\data.cql | bin\cypher-shell.bat -a localhost -u <user> -p <password> --fail-at-end

这在Windows10上是有效的,尽管它确实需要一段时间。

票数 2
EN

Stack Overflow用户

发布于 2019-01-17 04:50:25

如果您的非常大的CQL文件的目的仅仅是摄取数据,那么纯粹使用Cypher将会非常慢(甚至可能导致内存不足错误)。

如果您正在摄取一个新的neo4j DB,那么您应该考虑重构其中的数据,并使用import command of neo4j-admin工具来高效地摄取数据。

如果您正在摄取到现有的DB中,则应该考虑将数据和逻辑重构出CQL文件并使用LOAD CSV

票数 3
EN

Stack Overflow用户

发布于 2019-11-21 04:33:33

在事务外部运行查询时,neo4j will automatically start and commit a separate transaction for every query。您可以通过在开始时启动一个事务,并每隔几千个查询提交和启动一个新事务来加快速度(内存使用量将随着事务大小的增加而增加,因此这是事务大小的限制因素)。

示例queries.cypher (事务大小为3):

代码语言:javascript
复制
: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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54224244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档