【问题标题】:How to migrate data from MongoDB to SQL-Server? [closed]如何将数据从 MongoDB 迁移到 SQL-Server? [关闭]
【发布时间】:2015-05-01 11:53:34
【问题描述】:

我四处搜索,发现有一些方法可以将数据从 sql-server 传输/同步到 mongodb。

我也知道 Mongodb 包含集合而不是表,并且数据存储方式不同。

我想知道是否可以将数据从 mongodb 移动到 sql-server。如果是,那么我应该如何使用以及使用哪些工具/主题?

【问题讨论】:

  • JSON 文档中的嵌套层有多深?你的数据平坦吗?您的数据实际上是 JSON 还是存储在 GridFS 中的二进制 + 元数据?你想运行什么样的查询?来自不支持 MongoDB 的 BI 工具的结构化、主键检索、连接、查询?所有这些要点都会帮助人们回答问题。

标签: sql sql-server database mongodb data-migration


【解决方案1】:

当然有可能,但您需要找到一种方法,将像 MongoDB 这样的文档数据库的灵活性强加到像 SQL Server 这样的 RDBMS 中。

这意味着您需要定义您希望如何处理丢失的字段(在 db 列中是 NULL 吗?还是默认值?)和其他通常不适合关系数据库的东西。

说是的,你可以使用 ETL 工具来连接两个数据库,如果你想留在微软世界,SSIS 可以是一个例子(你可以查看这个Importing MongoDB Data Using SSIS 2012 有一个想法)或者你可以去对于像 Talend Big Data Integration 这样的开源工具,它有一个连接到 MongoDB(当然还有 SQL Server)的连接器。

【讨论】:

    【解决方案2】:

    无法直接将数据从 MongoDB 移动到 SQL Server。由于 MongoDB 数据是非关系型的,因此任何此类移动都必须涉及在 SQL Server 中定义目标关系数据模型,然后开发一种转换,该转换可以获取 MongoDB 中的数据并将其转换为目标数据模型。

    大多数 ETL 工具(例如 Kettle 或 Talend)都可以帮助您完成此过程,或者,如果您喜欢惩罚,您可以编写大量代码。

    请记住,如果您需要在线或多次应用此转换过程,您可能需要针对存储在 MongoDB 中的数据的结构或类型的任何微小变化对其进行调整。例如,如果开发人员向集合内的文档添加新字段,您的 ETL 流程将需要重新考虑(可能是新的数据模型、新的转换流程等)。

    如果你不是在 SQL Server 上出售,我建议你考虑 Postgres,因为有一个被广泛使用的开源工具 MoSQL 专门开发用于将 Postgres 数据库与 MongoDB 同步数据库。它主要用于报告目的(将数据从 MongoDB 中提取到 RDBMS 中,以便可以将分析或报告工具置于顶层)。

    MoSQL 得到广泛采用并得到很好的支持,对于严重扭曲的数据,您始终可以选择使用 Postgres JSON 数据类型,它不受任何分析或报告工具的支持,但至少允许您直接查询Postgres 中的数据。另外,现在我个人的偏见已经显现出来,Postgres 是 100% 开源的,而 SQL Server 是 100% 闭源的。 :-)

    最后,如果您只是从 MongoDB 中提取数据以简化分析或报告,您应该考虑SlamData,这是我去年开始的一个开源项目,它可以执行 ANSI MongoDB 上的 SQL,使用 100% 的数据库内执行(它基本上是一个 SQL-to-MongoDB API 编译器)。大多数使用该项目的人似乎将其用于分析或报告用例。优点是它可以按原样处理数据,因此您不必执行 ETL,当然它始终是最新的,因为它直接在 MongoDB 上运行。一个缺点是还没有人为它构建过 ODBC/JDBC 驱动,所以你不能直接将 BI 工具连接到 SlamData。

    祝你好运!

    【讨论】:

    • SQL Server 几十年来一直支持非关系数据。这并不总是最好的选择,但您可以轻松地将数据放入 JSON 列(真的是nVarChar(max)),如果使用旧版本,请使用 C# 扩展来添加 JSON 理解支持。
    【解决方案3】:

    MongoDB 提供了一个名为mongoexport 的工具,它能够导出 csv 文件。这些 csv 文件可以很容易地导入 MySQL。祝你好运!

    【讨论】:

    • 我认为它一次导出一个集合。是否可以使用一个命令将所有集合导出到 csv 中?
    • 我导出了带有字段的 mongodb 集合,但是使用 ssis 将数据传输到 Sql-server 需要大量调整。如果我成功了,我会更新。
    猜你喜欢
    • 2013-08-19
    • 2011-12-22
    • 2013-09-25
    • 2010-10-18
    • 2017-09-07
    • 2021-08-21
    • 2018-11-12
    相关资源
    最近更新 更多