将整个Neo4j数据库/ cypher结果导出到GraphJSON

时间:2017-05-03 21:21:34

标签: json database neo4j export

我已经查看了thisthis这样的不同帖子,但似乎没有任何回答100%。 我目前的问题是,我想用一个库(或软件/工具)来分析 - 并且理想地 - 分析我的Neo4j-Graph。 数据库服务器正在远程(虚拟)服务器上运行,似乎没有机会将数据库导出为我可以使用的格式。 我曾尝试在.graphml文件中导出图形以在Gephi中导入此文件,但Gephi没有找到属性。使用apoc程序和图形流插件的Gephi流也不起作用,因为它是一个远程服务器(也使用提到here的工具)。 现在我正在使用Alchemy.js进行测试...到目前为止,非常好。但是因为似乎无法将图形/查询导出为GraphJson格式? 导出数据真的没有“简单”的方法吗?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

这就是我要继续的方式

从您在Neo4j浏览器中提到的帖子或任何螺栓驱动程序中运行此查询:

MATCH (a)-[r]->(b)
WITH collect(
    {
        source: id(a),
        target: id(b),
        caption: type(r)
    }
) AS edges
RETURN edges

现在您已经加载了数据,您可以使用下载按钮将其作为JSON下载。(如果您使用的是bolt驱动程序忽略) download

您是从Neo4j浏览器手动下载JSON,或者您使用的是螺栓驱动程序,最终会得到类似的结果。

{
  "columns": [
    "edges"
  ],
  "data": [
    {
      "row": [
        [
          {
            "source": 31288,
            "target": 152,
            "caption": "HAS_PAYMENT_METHOD"
          }
        ]
      ],
      "meta": [
        null
      ],
      "graph": {
        "nodes": [

        ],
        "relationships": [

        ]
      }
    }
  ]

现在您只需要过滤掉data.row结果,就可以了。可能使用bolt驱动程序是更好的选择,因为无论如何你必须清理数据并且它不会遇到将大量数据返回到浏览器的问题(它可能会崩溃)。

更新:添加了python版本

from neo4j.v1 import GraphDatabase

driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "neo4j"))


session = driver.session()


result = session.run("MATCH (a)-[r]->(b) WITH collect({source: id(a),target: id(b),caption: type(r)}) AS edges RETURN edges")

for record in result:
    print(record["edges"])

希望这有帮助