我有一个以单个记录开头的数据模型,它有一个自定义" recordId"这是一个uuid,然后它与其他节点相关,然后它们又相互关联。该起始节点定义了"所属的数据"如果我们在neo4j中有单独的数据库,就像在一起一样。我需要将这些数据导出到备份数据集中,该数据集可以轻松地重新导入到同一个数据库或新数据库中
经过一些帮助后,我使用APOC进行导出:
call apoc.export.cypher.query("MATCH (start:installations)
WHERE start.recordId = \"XXXXXXXX-XXX-XXX-XXXX-XXXXXXXXXXXXX\"
CALL apoc.path.subgraphAll(start, {}) YIELD nodes, relationships
RETURN nodes, relationships", "/var/lib/neo4j/data/test_export.cypher", {})
我遇到了2个问题:
问题1是导出的数据具有内部neo4j标识符以生成关系。如果我们需要导入新数据库并且UNIQUE IMPORT ID值已经存在,那么这很糟糕。我需要用我自己的自定义recordIds生成这些数据作为参考点。
问题2是导入无法正常工作。
call apoc.cypher.runFile("/var/lib/neo4j/data/test_export.cypher") yield row, result
返回:
无法调用过程
apoc.cypher.runFile
:由以下原因引起:java.lang.RuntimeException:访问文件时出错/var/lib/neo4j/data/test_export.cypher
我希望有人可以帮我弄清楚可能发生的事情,但我不确定哪些其他信息会有所帮助。 Neo4j松弛通道中没有人能够帮助找到解决方案。
感谢。
答案 0 :(得分:0)
问题1: 导出的文件不包含任何内部neo4j ID。从数据库中使用neo4j ids是不安全的,因为它们不是全局唯一的。因此,您不应该使用它们将数据从一个数据库传输到另一个数据库。 如果您要使用全局uniqe ID,您可以使用GraphAware UUID插件等外部插件。 (免责声明:我为GraphAware工作)
problem2: 如果您无法访问该文件,那么可能的原因是: