将 MYSQL 数据库导入 NeO4j

Importing MYSQL database to NeO4j

我在远程服务器上有一个 mysql 数据库,我正试图将其迁移到 Neo4j 数据库中。为此,我将个人 tables 转储到 csv 文件中,现在计划使用 LOAD CSV 功能从 tables 创建图表。

加载每个 table 如何保持 table 之间的关系? 换句话说,我如何为整个数据库生成图表,而不仅仅是单个 table?

  1. 将每个 table 加载为 CSV
  2. 在你的关系字段上创建索引(Neo4j 只做单个 属性 索引)
  3. 使用 MATCH() 查找 table 之间的相关记录
  4. 使用 MERGE(a)-[:RELATIONSHIP]->(b) 创建 table 之间的关系。

运行 "all at once",这将创建一个大事务,不会完成,很可能会因堆错误而崩溃。解决这个问题需要首先加载 CSV,然后以 10K-100K 交易块的批次创建关系。

实现该目标的一种方法是:

MATCH (a:LabelA)
MATCH (b:LabelB {id: a.id}) WHERE NOT (a)-[:RELATIONSHIP]->(b)
WITH a, b LIMIT 50000
MERGE (a)-[:RELATIONSHIP]->(b)

它的作用是查找与 :LabelA 记录没有关系的 :LabelB 记录,然后为它找到的前 50,000 条记录创建该关系。 运行反复这样做最终会建立你想要的所有关系。