2017-05-09 125 views
0

我有一个单一的记录开始,这有一个自定义“的recordId”这是一个UUID的数据模型,然后将它涉及到其他节点,然后他们又相互关联。这起始节点是什么定义了“属于”在一起,在如果我们有内部的Neo4j独立的数据库中的数据。我需要导出这些数据,到可以重新导入相同或者轻松Neo4j的APOC导入错误

一个新的数据库一些帮助后,我用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

在被明显的风险,你验证了该路径存在*的Neo4j的服务器的计算机系统上*? – cybersam

+0

是的,路径存在,并且在尝试恢复文件之前,导出会将文件放在那里。我从字面上跑了一个,然后把另一个文件名/路径复制并粘贴到两者中。找不到任何导出成功的原因,并且导入无法访问文件。 –

回答

0

问题1: 导出的文件不包含任何内部Neo4j的IDS。从数据库中使用neo4j标识是不安全的,因为它们不是全球唯一的。所以您不应该使用它们将数据从一个数据库传输到另一个数据库。 如果您要使用全球潮头ID,您可以使用外部插件像GraphAware UUID插件。 (声明:我GraphAware工作)

problem2: 如果您不能访问该文件,则可能的原因:

  • apoc.import.file.enabled =真不neo4j.conf
  • 设置
  • 操作系统级别 权限不设置
+0

我最终编写了自己的使用螺栓协议的导入/导出过程。老实说,Neo4j社区和企业提供的工具在我看来是相当不可用的。 –