在不同 DBMS 之间传输数据

Posted

技术标签:

【中文标题】在不同 DBMS 之间传输数据【英文标题】:Transferring data between different DBMS's 【发布时间】:2011-03-01 07:20:16 【问题描述】:

我想将我在 Informix 中的整个数据库转移到 Oracle。我们有一个适用于两个数据库的应用程序,我们的一个客户正在从 Informix 迁移到 Oracle,并且需要将整个数据库转移到 Oracle(结构相同)。

我们经常需要在 oracle/Mssql/Informix 之间传输数据,有时只需要一个表而不是整个数据库。

有人知道有什么好的程序可以做这种工作吗?

【问题讨论】:

感谢您的回答,但我需要informix 支持,这是一种将informix 迁移到其他数据库的工具。 【参考方案1】:

PentahoData IntegrationETL 工具可作为开源工具(也以以前的名称“Kettle”而闻名)用于跨数据库迁移和许多其他用例。

来自他们的数据表:

常见用例

内置支持缓慢变化的数据仓库填充 尺寸,垃圾尺寸 将数据库导出到文本文件或其他数据库 将数据导入数据库,范围从文本文件到 Excel 床单 数据库应用程序之间的数据迁移 ...

输入/输出数据格式列表可以在这个问题的接受答案中找到:Does anybody know the list of Pentaho Data Integration (Kettle) connectors list? 它支持所有带有 JDBC 驱动程序的数据库,这意味着大多数数据库。

【讨论】:

【参考方案2】:

检查我的这个问题,它包含了一些非常好的想法:Searching for (freeware) database migration tool

【讨论】:

【参考方案3】:

您可以试试 Oracle 迁移工作台。请参阅http://download.oracle.com/docs/html/B15858_01/toc.htm 如果您想定期将 Informix 数据读入 Oracle,使用异构服务可能是更好的选择。检查 hs4odbc 或 dg4odbc,具体取决于您拥有的 Oracle 版本。

我希望这会有所帮助, 罗纳德。

【讨论】:

【参考方案4】:

我过去做过这件事,这不是一项简单的任务。我们最终将每个表写出到一个管道分隔的平面文件中,并使用 Oracle SQL Loader 将每个表重新加载到 Oracle 中。有大量的 Perl 脚本来清理源数据和 shell 脚本以尽可能地自动化该过程并并行运行。

可能出现的问题: 1. 选择一个尽可能独特的分隔符。 2. 尝试找到尽可能接近 Informix 匹配的数据类型。即日期与时间戳 3. 在转储平面文件之前,尽量让数据干净。 4. HS 很可能太慢了..

这是几年前完成的。您可能想调查可能有助于该过程的 Golden Gate(现在由 Oracle 拥有)软件(我这样做时 GG 不存在)

另一个想法是使用 ETL 工具读取 Informix 并将数据转储到 Oracle(想到 Informatica)

祝你好运:)

【讨论】:

【参考方案5】:

sqlldr - Oracle 的导入实用程序

以下是我将 50TB 数据从 mysql 传输到 ORacle 的过程。从 MySql 生成 csv 文件并使用 oracle 中的 sqlldr 实用程序将文件中的所有数据导出到 oracle db。这是导入数据的最快方式。我对此进行了几周的研究并完成了许多基准测试用例,而 sqlldr 是导入 oracle 的最佳、最快的方法。

【讨论】:

以上是关于在不同 DBMS 之间传输数据的主要内容,如果未能解决你的问题,请参考以下文章

13.数据分类模型

如何使用PowerDesigner创建物理数据模型

是否可以在两个不同 iOS 设备的应用程序之间传输数据?

基于ARP分析一个数据报如何在同一子网和不同子网之间传输

通过PLSQL Developer创建Database link,DBMS_Job,Procedure,实现Oracle跨库传输数据

使用不同 DBMS 的 Liquibase 数据库迁移