将MYSQL数据库导入NeO4j

时间:2016-04-18 15:19:20

标签: mysql csv graph neo4j foreign-key-relationship

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

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

1 个答案:

答案 0 :(得分:0)

  1. 将每个表格加载为CSV
  2. 在您的关系字段上创建索引(Neo4j仅执行单个属性索引)
  3. 使用MATCH()查找表之间的相关记录
  4. 使用MERGE(a) - [:RELATIONSHIP] - >(b)创建表之间的关系。
  5. 运行“all all”,这将创建一个大型事务,不会完成,并且很可能会因堆错误而崩溃。解决该问题需要先加载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)
    

    这样做的结果是:LabelB记录与:LabelA记录没有关系,然后为它找到的前50,000条记录创建该关系。反复运行这将最终创建您想要的所有关系。