【问题标题】:Neo4j export & import dataNeo4j 导出和导入数据
【发布时间】:2015-03-30 13:12:09
【问题描述】:

有没有一种使用 Neo4j Java API 将一些数据从一个数据库迁移到另一个数据库的好方法?我的用例是将几千个节点加载到临时数据库中,进行一堆转换,然后将结果导出到主数据库并删除临时数据库。

我不想破坏目标数据库中的数据,这是一个附加过程。我在互联网上看到很多人(例如here)说“只需将数据目录复制到新位置”,但这当然会破坏目的地。

更新 - 我尝试了neo4j-shell -path tmpDir -c "DUMP MATCH n RETURN n;" | neo4j-shell -path dbDir -file -,但它真的非常慢。生成输出的速度似乎足够快,但将其重新输入是非常困难的,即使是在新的空数据库上也是如此。

【问题讨论】:

  • 您是将新数据连接到现有图表还是覆盖它或两者兼而有之?整个新图表是否正在移动到现有图表?
  • 整个新图将被导入,但它不会与现有节点有任何交互——它将是一组不相交的节点和边。我实际上是一次将一个大型连接组件加载到主数据库中。

标签: java import neo4j export


【解决方案1】:

有多种选择:

  1. 您可以在您的 java 副本中打开两个 neo4j 数据库,然后使用 Java API 将节点和关系从一个转移到另一个。

  2. 在初始播种的低级别上,您可以对 batch-inserter-apis 执行相同操作,就像我在这里所做的那样:https://github.com/jexp/store-utils/tree/21

  3. 您可以将密码结果导出到 CSV(例如从浏览器中)并使用例如 LOAD CSV 再次导入

  4. 您可以将neo4j-shell-tools 用于其中一些导入-导出任务,例如导出到 GraphML 或 CSV 并再次导入

【讨论】:

  • 谢谢,我会给选项 1) 一个机会。
  • 效果很好,以下是我如何做到的要点:gist.github.com/kenahoo-windlogics/036639a7061877acc520
  • 分发没有内置、简单、单命令、零编程、零学习“导入/导出所有内容”功能的 DBMS 应视为刑事犯罪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
相关资源
最近更新 更多