我正在研究Neo4j支持的项目。我想找到一种转储数据库并以版本间方式还原它的方法(例如,从版本2.*
中转储数据并将其加载到版本3.5.6
中,反之亦然!)。
我需要的是一种提取和重新加载数据的方法,该方法受尽可能多的Neo4j版本支持。我已经签出了外部库,例如APOC,但看来它们不适用于较新版本的Neo4j。过去,我还尝试过残酷地复制数据文件,但是如果Neo4j版本太远,则会引发错误。
到目前为止,我发现最好的版本间解决方案是使用this blog post中所述的Neo4j的REST API。我执行这样的查询
curl -H accept:application/json -H content-type:application/json \
-d '{"statements":[{"statement":"MATCH ... RETURN ..."}]}' \
http://localhost:7474/db/data/transaction/commit
检索节点和rel(以及它们的标签和属性)并将其序列化为JSON文件。然后,我使用自定义Python脚本处理此类JSON,以将数据重新加载到新的Neo4j数据库中。当然,最终的索引或约束需要在目的地中重新创建。
我想知道是否有比我更聪明的方法来做到这一点,从而避免版本间的麻烦。