不同DBMS之间的数据迁移

时间:2011-03-07 08:22:42

标签: sql-server oracle delphi relational-database informix

由于我无法得到我Question的任何令人满意的答案,我们似乎必须为此编写自己的程序,我们正处于设计阶段,我们正在考虑使用哪种格式来备份数据。

该程序将用Delphi编写。

需要在Oracle / Informix / Msserver之间导出/导入数据,非常重要这里是性能问题,因为此程序将在1-2 GB数据库上运行。除了普通数据之外,数据库中的Blob还必须备份。

我们想到了Xml-Data或逗号分隔的数据,因为它们都是透明的(这很好),但是必须在这里考虑Blob。在这种情况下,Paradox格式不是选择性的。

有人可以推荐一些高性能的格式吗?

欢迎任何其他实现同一目标的想法。

提前完成。

7 个答案:

答案 0 :(得分:4)

我使用一个名为OmegaSync的优秀程序进行备份,但它只能通过ODBC而不是直接处理Informix。如果您发现可以使用OmegaSync,您会发现它的性能非常出色,因为它首先比较数据库,然后仅同步差异。如果您决定自己进行编程,如果效率是您的首要目标,您可能想要使用这个想法。

但编程数据库转换非常复杂,因为其他问题的答案已经说明了。那么为什么不只是开发你需要的SQL,并以这种方式进行转换。例如,请参阅:Convert Informix Schema to Oracle Schema Or Any Other RDBMS要移动数据,请查看以下来源:Moving non-informaix data between computers and dbspaces

如果您巧妙地转储和加载数据,可以将SQL优化为我确定的足够速度。

答案 1 :(得分:3)

DbUnit是一种流行的工具,可以以XML格式提取和加载数据,参见

http://www.dbunit.org/faq.html#extract

    // partial database export
    QueryDataSet partialDataSet = new QueryDataSet(connection);
    partialDataSet.addTable("FOO", "SELECT * FROM TABLE WHERE COL='VALUE'");
    partialDataSet.addTable("BAR");
    FlatXmlDataSet.write(partialDataSet, new FileOutputStream("partial.xml"));

    // full database export
    IDataSet fullDataSet = connection.createDataSet();
    FlatXmlDataSet.write(fullDataSet, new FileOutputStream("full.xml"));

答案 2 :(得分:1)

您是否检查过ODI(Oracle Data Integrator)它支持许多源数据库。它能够从源数据库捕获更改并将它们集成到目标数据库中。它性能很好,但有价格标签。

罗纳德。

答案 3 :(得分:1)

新的DBExpress框架提供了在许多数据库之间导出/导入数据的可能性。您可以查看此CodeRage会话Deep Dive into dbExpress by John Kaster

答案 4 :(得分:1)

您应该使用自己的二进制格式,通过(xml用于Blob的text / streams)集成。

答案 5 :(得分:0)

如果您还必须导出元数据而不仅仅是数据,那么它可能非常复杂。您将要使用的数据库之间存在许多微妙的(而不是那么微妙的差异),这种格式应该足够通用,导出/导入代码应该能够跨数据库转换和映射元数据,并且因为外部应用程序无法直接写入数据库内部结构,因此必须生成db正确的DDL来创建数据结构。 只要这是一种专有格式,恕我直言,其设计是您的问题中最少的,如果大小和性能很重要并且文件是按顺序读取的,那么设计二进制格式并不困难。 无论如何,导入/导出和备份是两个不同的任务。如果必须备份数据库,请使用其功能。它们通常允许更多的控制,即时间点恢复。如果你必须跨数据库移动数据是另一个问题 - 我只会编写代码来移动数据,而不是元数据,在目标数据库中预先创建所需的结构。

答案 6 :(得分:0)

您可以尝试Toad (Quest Software)

它支持您提到的所有平台,并且可以执行源平台上的“将表数据导出到INSERT语句”,然后可以在目标平台上运行。 IIRC甚至还有一些可能跨平台的Toad内部备份格式。

Toad Communities:

有关导出,导入的一些视频: