我曾经称
call apoc.export.json.all("backup.json",{useTypes:true})
字符串
一方面备份我的数据库内容,另一方面,现在我试图通过先导出到json然后再导入数据来将数据迁移到另一台机器。
call apoc.import.json("backup.json")
型
根据some neo4j developer,这应该是一个有效的选项。然而,我遇到了一个异常:
Failed to invoke procedure `apoc.import.json`: Caused by: java.lang.RuntimeException: Missing constraint required for import. Execute this query:
CREATE CONSTRAINT FOR (n:MyLabel01) REQUIRE n.neo4jImportId IS UNIQUE;
型
即使创建这个需求也会导致越来越多的这种类型的错误。
这些错误发生在我尝试将数据从旧的neo4j版本/ apoc版本迁移到新的版本时,也发生在我根据return apoc.version()
使用apoc版本5.12.0从 neo4j kernel 5.12.0 enterprise 导出并尝试导入与我导出json相同版本的新数据库时。
所以我试着找一些变通的办法,
CALL apoc.load.json("backup.json") yield value
WHERE value.type = "node"
CALL apoc.create.node(value.labels,value.properties)
yield node return node
型
但是我也不知道如何导入relashion。
- 是否有(不同的)标准方法将数据库内容移植到另一台机器上?
- 或者是否有一些选项可以使用apoc.load.json(“backup.json”)并创建节点和关系?
1条答案
按热度按时间p5fdfcr11#
解决方法
我写了一个小的python脚本来将导出的json转换成一个cypher
CREATE
指令,它应该会创建之前导出的数据库内容。如果导出的json有额外的属性没有被这个脚本处理,它至少会打印一个“错误”列表,这些错误只是json输入中被忽略的部分,这样用户就可以手动检查。
字符串