Neo4J:导入大型Cypher转储

6
我有一个大型的Neo4J 2.2.5数据库转储文件,包含数百万个节点和关系,格式为Cypher(使用neo4j-sh -c dump生成)。我试图将其导入到3.0.3实例中,但是导入过程(neo4j-sh < dump.cypher)在几分钟后就会显著减速,最后只能每秒处理几个记录。有没有办法加快这个过程?我尝试了按照手册中的描述升级数据库,但新实例会出现存储格式版本不匹配的异常并崩溃。
2个回答

2
Neo4j 3.0提供了一个bin/neo4j-admin工具,专门用于此目的。
请尝试使用bin/neo4j-admin import --mode database --from /path/to/db 参见:http://neo4j.com/docs/operations-manual/current/deployment/upgrade/#upgrade-instructions Cypher转储对于大型数据库没有用处,它仅适用于小型设置(几千个节点)的演示等。
FYI:在Neo4j 3.0中,APOC的Cypher导出过程更适合大规模Cypher转储。
更新:
您还可以先尝试从2.2升级到2.3。例如使用neo4j-shell
在2.3中,在您的neo4j.properties中添加allow_store_upgrade=true 然后执行:bin/neo4j-shell -path /path/to/db -config conf/neo4j.properties -c quit 如果完成,则备份的db版本为2.3
然后你应该能够使用neo4j-admin -import ...命令。

谢谢Michael。这是我第一次尝试的方法,但不幸的是,我遇到了一个异常: org.neo4j.kernel.impl.storemigration.StoreUpgrader$UnexpectedUpgradingStoreVersionException: '/var/lib/neo4j/data/databases/graph.db/neostore.nodestore.db' 的存储版本为 '���+',我们无法从中升级 - Manuel Aristarán
我想知道 store-utils 是否有用。它能否用于在主要的 Neo4j 版本间迁移存储? - Manuel Aristarán
更新了答案。 - Michael Hunger
没有运气。neo4-shell 命令在几秒钟内默默地完成了。当我尝试使用所谓升级后的数据库启动2.3时,我遇到了类似的异常。'/var/lib/neo4j/data/graph.db/neostore.nodestore.db' 具有我们无法从中升级的存储版本号。期望为 'v0.A.3',但文件版本为 '���+'。 - Manuel Aristarán
好的,成功了。我之前是在 Docker 容器中运行脚本,停止时可能没有干净地关闭容器。在容器外执行升级操作就可以了。再次感谢。 - Manuel Aristarán

0

最近我遇到了 CSV 导入速度极慢的问题。 我的 load-csv Cypher 脚本有太多关系。

所以我将我的加载分为两部分。首先创建节点,然后创建关系和大部分连接的节点。HIH。

回到你的问题 首先,尝试增加 JVM 的内存。在 NEO/conf 中,有一个包装器文件。在开头是内存设置。

最后,从包含您数据的实例中,导出到多个 CSV 文件并将它们导入到新服务器中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接