如何将数据从sql导入neo4j
Posted
技术标签:
【中文标题】如何将数据从sql导入neo4j【英文标题】:how to import data from sql to neo4j 【发布时间】:2013-10-07 21:01:52 【问题描述】:我开发了一个具有 SQL 数据库的 .net 项目。 我想知道有什么方法可以直接将我的SQL DB文件导入neo4j数据库?
【问题讨论】:
你的意思是避免编写程序来完成它吗?即你想要在 neo4j 服务器上的一个函数,你可以指向一个 sql server 实例并让它读取服务器? 是的,类似的,或者不是用neo4j服务器密码语言创建表和数据,它可以接受sql语言,所以我可以使用sql导出工具并在neo4j服务器上运行脚本并将它们导入那里 图形数据库和关系数据库是两个不同的世界。 “直接”导入到底是什么意思? 好吧,我正在使用 LINQ to sql 与我的数据库对话,我想用图形数据库替换它,这样我的程序就可以与图形数据库对话,我在 Tatham 视频中看到 [vimeo.com/43676873],他将一些数据导入图形数据库,然后从其程序中对其进行查询,我想知道如何一次将我的数据全部导入它或要求它使用我的 sql 数据库 有:neo4j.org/develop/import 提供了一些关于如何从关系数据库中导入数据的信息。还有github.com/peterneubauer/sql-import 【参考方案1】:Chris Skardon 是对的,您可能需要稍微整理一下类别。 Neo4j 不是关系数据库之上的图形层,它是一种竞争/互补的数据库。虽然可以在 Neo4j 中模仿您的关系模式,但它可能不是很有用,您可能需要进行一些改造才能从使用 Neo4j 中受益。
如果您决定将数据从 SQL 数据库传输到 Neo4j,但不想自己编写实际导入的代码,这里有一些提示和工具可供参考。 (我很抱歉该列表如此以 Java 为中心,但我还没有与 .NET 中的 Neo4j 进行过交互——我相信这里的其他人可以提供帮助。)
将 SQL 导出为 CSV,使用 Michael Hunger's Batch CSV Importer 和一些 Guidance From Max De Marzi 导入 Neo4j 将 SQL 导出到电子表格并按照Instructions Here 导入到 Neo4j 使用Pentaho Kettle 之类的ETL 工具和Neo4j JDBC Driver 使用对象映射框架(可能类似于您的 Linq),例如 Spring Data。 Spring Data Neo4j 用于他们所谓的对象图映射,您甚至可以将域对象划分为不同的数据库后端系列,即所谓的Cross Store Persistence不过,我谦虚地建议您尽可能多地编写自己的代码来与 Neo4j 交互。可能其他人做得更好(至少我倾向于这样),但自己编写会大大增强您对数据库和 API 的理解,当您真正知道如何驾驶时,您将获得更好的里程数。
【讨论】:
【参考方案2】:我不知道 Neo4j 可以直接导入 SQL 的任何方式,您提到您目前正在使用 LinqToSQL 来读取您的数据库,所以我想您也有一组代表您的数据的类?
据我所知,最好的办法是通过 LinqToSQL 代码读取数据,然后将其推送到 Neo4j 数据库中。 但是你会想要确保你的代码有意义,例如,你说
而不是创建表和数据
Neo4j 没有表的概念,我会花时间试验你必须查看的有限数据子集,看看花时间迁移是否真的有意义。您可能/可能会发现您当前的数据对象在图形世界中没有意义......
【讨论】:
【参考方案3】:除了此处的 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] 用作图形关系。
【讨论】:
我写了一篇博文,介绍了一种从Microsoft SQL Server直接将数据导入Neo4j的方法,您可以查看:Import Data into Neo4j from MS SQL Server Directly using Talend以上是关于如何将数据从sql导入neo4j的主要内容,如果未能解决你的问题,请参考以下文章