数据库迁移工具

将数据从一个数据库转换为另一个数据库

  • 在不同数据库之间迁移数据
  • 支持所有主流的关系型数据库
  • 将SQL数据库转换为NoSQL数据库
  • 无需编写代码,基于图形化的数据映射
  • 指定数据库的密钥设置
  • 映射具有不同名称、类型和结构的字段
  • 定义数据库表的操作
  • 对SQL存储过程的支持
  • 输出日志记录与错误处理,并支持回滚
  • 直接查询数据库
  • 对数据库输入组件进行排序和筛选
  • 即时转换,并提供经济实惠的自动化解决方案

数据库迁移工具

将数据从一个数据库迁移到另一个数据库是数据管理中最常见的任务之一。无论您是在合并后整合系统、淘汰旧平台、统一使用单一数据库供应商,还是将桌面数据库迁移到服务器数据库,Altova MapForce 都是一款数据库迁移工具,它通过直观的、拖放式界面来处理这些转换,无需手动编写任何迁移脚本。

MapForce 可以连接到您的源数据库和目标数据库,自动读取双方的模式,并允许您通过在两侧的表和列之间建立连接来定义迁移规则。由于源数据库和目标数据库之间的映射是明确的,因此您不必局限于完全相同的模式:您可以重命名列,拆分或合并字段,转换数据类型,过滤行,并在同一迁移过程中重塑目标结构。

支持 关系型的 数据库:

  • Firebird
  • IBM DB2 for iSeries®
  • IBM DB2®
  • Informix®
  • MariaDB
  • Microsoft Access™
  • Microsoft® Azure SQL
  • Microsoft® SQL Server®
  • MySQL®
  • Oracle®
  • PostgreSQL
  • Progress OpenEdge
  • SQLite
  • Sybase® ASE
  • Teradata

支持 NoSQL 数据库:

  • MongoDB
  • CouchDB
  • 微软 Azure Cosmos DB

任何支持的数据库都可以作为源数据库、目标数据库,或者两者兼备。这意味着该工具可以覆盖上述列表中所有可能的源数据库到目标数据库的组合,而不仅仅是单一的、固定的迁移路径。

数据库之间转换的工作原理

在MapForce中,使用可视化的、拖放式的数据映射工具,可以轻松定义数据库迁移项目。您甚至可以使用Altova AI,在加载源数据结构和目标数据结构后,获取建议的连接方式。

1. 连接到数据源数据库。数据库连接向导将引导您完成连接过程。SQLite 连接支持直接连接到数据库文件,无需单独的驱动程序。其他数据库可以通过原生方式或通过标准接口(包括 ODBC、JDBC、ADO 和 ADO.NET)进行连接。

 

连接到数据库以进行转换

 

2. 连接到目标数据库。MapForce 以相同的方式加载目标数据库的结构,并显示可用的表、视图和关系。

3. 定义表和列之间的对应关系。 通过拖动连接线,将源表中的数据映射到目标表中的相应列。或者,您可以从 Altova AI 开始。MapForce 会自动识别表之间的关系,因此相关表会将它们的结构信息一同导入到映射关系中。

4. 根据需要,对数据进行转换在源数据和目标数据之间插入过滤器、条件和数据处理函数,以转换数据类型、重新格式化数值、连接或拆分字段,并排除您不想迁移的行。

 

MapForce 中的数据库迁移

 

5. 预览和运行。 内置的 MapForce 引擎允许您在执行 SQL 脚本(包括 SELECT、INSERT、UPDATE 和 DELETE 语句)之前,在“输出”选项卡上预览这些脚本,从而避免对目标数据库造成不必要的错误。

在 MapForce 中,预览 SQL 输出,以便迁移数据库

迁徙路线

以下描述了一些最常见的数据库迁移任务。 同样的方法也适用于任何其他受支持的数据库组合。

Oracle数据库迁移到PostgreSQL

将数据从 Oracle 迁移到 PostgreSQL 的组织需要将表数据从两个不同的数据库引擎之间迁移,这两个引擎对列的命名和类型有所不同。通过数据库连接向导,MapForce 可以通过 JDBC 或 ODBC 连接到 Oracle,并通过原生连接或驱动程序连接到 PostgreSQL。它会将两个数据库的模式加载到映射面板中,您可以在其中拖放(或使用 Altova AI)将 Oracle 表与其对应的 PostgreSQL 表连接起来。

只需简单地拖放数据处理功能,即可在 Oracle 和 PostgreSQL 数据类型之间进行转换,调整日期和时间戳的格式,并根据相关数据库的规则,以支持 NULL 值的处理。数据库键设置允许您决定主键和外键值是来自 Oracle 数据库,还是在插入时由 PostgreSQL 数据库生成。

MySQL数据库迁移到PostgreSQL数据库

将 MySQL 数据库迁移到 PostgreSQL 是 MapForce 最常用的应用之一。一旦两个数据库的结构都加载完毕,MapForce 会解析每个结构,显示可用的表和视图,并识别它们之间的关系。要完成迁移,只需在源结构和目标结构之间拖动连接线,并在 MySQL 和 PostgreSQL 类型或规范不同的地方添加数据处理函数即可。

由于该映射关系被保存为可重复使用的设计,因此,当源数据发生变化时,例如在分阶段迁移过程中或作为定期的数据加载,相同的 MySQL 到 PostgreSQL 迁移过程可以被重新执行。

将 SQLite 数据库迁移到 MySQL

SQLite数据库经常被用于本地或嵌入式存储,但之后可能需要将其数据迁移到共享的MySQL服务器上。

SQLite 的灵活类型系统是这次迁移中需要重点考虑的问题:SQLite 存储的数据类型相对宽松,需要将其映射到 MySQL 中明确定义的列。MapForce 的数据处理功能可以在映射过程中完成这种转换,从而确保正确类型的数据被写入到 MySQL 目标数据库中。

SQL Server 迁移到 MySQL

在从 MSSQL 迁移到 MySQL 时,MapForce 会在映射过程中处理两个数据库引擎之间的结构差异。列名重命名、数据类型转换以及值格式化等操作都通过图形界面进行,而不是通过迁移脚本。表操作功能让您可以控制数据映射的方式。您可以为每个表选择插入、更新或删除操作,并定义 MapForce 使用哪些列来判断目标行是否已存在。

将 Microsoft Access 数据库迁移到 SQL Server

那些已经超出桌面数据库容量的数据库通常会被迁移到 SQL Server。MapForce 通过 ADO 连接到 Microsoft Access 和 SQL Server,加载两者的模式,并允许您将 Access 中的表和查询映射到 SQL Server 中的表。

Access和SQL Server在数据类型、键的处理方式以及命名规则等方面存在差异。通过可视化方式进行映射,可以明确这些差异,并允许您在映射过程中一次性进行修正,而不是在数据层面反复修改。数据库的键设置决定了Access中的自增值(AutoNumber)是否会被保留,或者是否会被SQL Server的标识值(identity values)所替代。

将 Access (ACCDB) 数据库迁移到 SQLite

将 ACCDB 文件转换为 SQLite 格式,可以将 Access 数据库迁移到一个轻量级、基于文件的格式,该格式可以在任何地方运行。MapForce 通过 ADO 读取 Access 数据库,并通过原生连接将数据写入 SQLite 文件。与任何 MapForce 迁移一样,源数据库和目标数据库的结构不必完全一致。在将 Access 结构转换为 SQLite 结构时,您可以进行扁平化、重命名或子集选取等操作。

MariaDB 数据库迁移到 MySQL

MariaDB和MySQL关系密切,但从一种数据库迁移到另一种数据库时,仍然需要考虑数据类型、键以及任何不同的列定义。如果数据库结构完全相同,那么迁移过程就是简单的连接;如果数据库结构不同,则需要应用与任何其他迁移路径中使用的相同过滤和转换方法。

SQL数据库迁移到NoSQL数据库

MapForce 还可以将数据从关系型数据库迁移到 NoSQL 数据库,包括 MongoDB、CouchDB 和 Microsoft Azure Cosmos DB。它能够将关系型数据库中的行及其相关表以可视化的方式映射到文档结构中,从而可以将规范化的 SQL 模式重塑为文档,这可以在迁移过程中完成,而无需单独的转换步骤。

数据过滤与处理

大多数实际的数据迁移并非简单的逐列映射。MapForce 包含一个数据处理函数库,用于进行逻辑比较、数学计算、字符串处理以及日期和时间处理,此外,它还提供过滤器和条件,用于控制哪些行能够到达目标。

这意味着您可以在同一个可视化映射界面中,迁移部分源数据,将两个源字段合并到一个目标字段,将一个源字段拆分到多个目标字段,查找并替换值,或者在迁移过程中应用业务规则。

数据库密钥设置

MapForce 数据库关键设置允许您自定义在数据迁移过程中,如何将主键和外键值添加到目标数据库。您可以从 MapForce 中提供键值,从而保留源系统使用的标识符,或者让目标数据库系统自动生成键值。

定义数据库表的操作

“数据库表操作”对话框控制数据如何写入到每个目标表中。您可以选择要执行的操作(插入、更新、删除),并定义 MapForce 用于匹配目标记录的列。该对话框支持 NULL 值的比较,因此可以配置迁移过程,使其能够根据所涉及数据库的规则,以一种能够处理 NULL 值的形式进行数据比较。

 

控制数据库映射过程中数据的写入方式

 

对SQL存储过程的支持

MapForce 包含: 对存储过程的支持 这些存储过程可以作为输入或输出组件,或者作为类似函数的调用——提供输入数据、执行过程,并将输出数据映射到其他组件。此外,存储过程还可以用于在数据迁移过程中生成关键值。

数据库输出日志/追踪功能

数据库输出追踪 会记录迁移过程中的所有更改。当启用追踪功能时,诸如数据库插入或更新操作以及错误等事件会被写入一个 XML 文件,您可以稍后分析该文件或进行进一步处理。输出日志对于记录迁移过程非常有用。

数据库事务错误处理

MapForce 提供了数据库事务处理功能,当转换过程中出现错误时,它可以回滚受影响的部分,并且可以选择继续执行其余的映射操作。 这样可以避免部分失败导致目标数据库处于不一致的状态。

直接查询数据库

`数据库查询 选项卡允许您在 MapForce 内部,通过一个完整的 SQL 编辑器,对源数据库或目标数据库执行 SQL 查询。这对于在设计映射之前检查源数据,以及在数据迁移完成后验证目标数据非常有用。

 

在转换过程中查询数据库

 

对数据库输入组件进行排序

对于需要特定顺序输入数据的迁移任务,SQL-WHERE/ORDER 组件为数据库输入组件提供了额外的排序和过滤选项。

使用 MapForce Server 实现数据迁移的自动化和扩展

一旦在 MapForce 中设计并测试好数据转换方案,Altova MapForce Server 就能提供高性能的自动化功能,可以通过命令行、API 接口进行编程调用,或者作为由 FlowForce Server 管理的任务步骤,基于预定义的触发器和时间表进行执行。

MapForce Server 包含并行处理和多线程技术,支持批量 SQL 插入,以及跨平台支持,因此,大型数据迁移和重复加载的速度比手动交互式操作更快。对于分阶段迁移,即在最终切换之前,需要多次迁移相同的数据表,这可以将一次性的数据映射转换为可重复、可计划的操作。