在不同 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 之间传输数据的主要内容,如果未能解决你的问题,请参考以下文章
通过PLSQL Developer创建Database link,DBMS_Job,Procedure,实现Oracle跨库传输数据