我开发了一个具有 SQL 数据库的 .net 项目。我想知道有什么办法可以直接将我的SQL DB文件导入neo4j数据库吗?
3 回答
Chris Skardon 是对的,您可能想稍微整理一下类别。Neo4j 不是关系数据库之上的图形层,它是一种竞争/互补的数据库。虽然可以在 Neo4j 中模仿您的关系模式,但它可能不是很有用,您可能需要进行一些改造才能从使用 Neo4j 中受益。
如果您决定确实要将数据从 SQL 数据库传输到 Neo4j,但不想自己编写实际导入的代码,这里有一些技巧和工具可供参考。(对于这个以 Java 为中心的列表,我深表歉意,但我还没有与 .NET 的 Neo4j 进行过交互——我相信这里的其他人可以提供帮助。)
- 将 SQL 导出为 CSV,使用Michael Hunger 的 Batch CSV Importer导入 Neo4j,并获得Max De Marzi的一些指导
- 将 SQL 导出到电子表格并按照此处的说明导入到 Neo4j
- 使用带有Neo4j JDBC 驱动程序的 ETL 工具,例如Pentaho Kettle
- 使用对象映射框架(可能类似于您的 Linq),例如Spring Data。Spring Data Neo4j用于他们所谓的对象图映射,您甚至可以将域对象划分为不同的数据库后端系列,即所谓的跨存储持久性
但是,我谦虚地建议尽可能多地编写自己的代码来与 Neo4j 交互。可能其他人做得更好(至少这是我倾向于发现的),但自己编写将大大增强您对数据库和 API 的理解,并且当您真正知道如何驾驶时,您将获得更好的里程数。
我不知道 Neo4j 可以直接导入 SQL 的任何方式,你提到你目前正在使用 LinqToSQL 来读取你的数据库,所以我想你也有一组代表你的数据的类?
据我所知,最好的办法是通过 LinqToSQL 代码读取数据,然后将其推送到 Neo4j 数据库中。但是,您需要确保您的代码有意义,例如,您说
而不是创建表格和数据
Neo4j 没有表的概念,我会花时间试验您必须查看的数据的有限子集,看看花时间迁移是否真的有意义。您可能/可能会发现您当前的数据对象在图形世界中没有意义......
除了这里的 jjaderberg 回答之外,您还可以使用 Talend Open Studio for Big Data 查询 SQL 服务器并将结果直接导入 Neo4j 图形,而无需先将其导出到 .csv 或电子表格。
这是一个关于如何将 Talend 与 Neo4j 一起使用的教程:http: //neo4j.com/blog/fun-with-music-neo4j-and-talend/
请注意,他使用的是 .csv,但您可以轻松地将任务tMSSqlInput用作而是一个数据源,任务 [tNeo4jOutput] 作为数据的目标,任务 [tNeo4jOutputRelationship] 用于图形关系。