如何在不同类型的数据库间迁移数据?

    refresh_mysql.pl是一个用来从Oracle向MySQL中复制变更数据的Perl角本. 通过变通的方法, 也可以用于在不同种类的数据库之间拷贝数据. 只要我们建一个假的和Oracle实体化视图日志表结构差不多的表就可以了, 然后向这个表中手工插入记录(在Oracle中, 实体化视图日志会被自动维护), 也可以被这个角本支持. 再进一步地去设想, 在非Oracle的数据库中, 可以用触发器(Trigger)来维护变更记录, 达到和视图化视图日志一样的作用, 就可以从其他的数据库向Oracle复制数据了.

    在这儿只要我们自已建的临时表包括所有的主键列, 两个名字分别为"SEQUENCE$$"和"DMLTYPE$$"的列就可以了, 我已经在MySQL中测试过了, 列名中可以包含"$"符号, 如下所示:

create table temp_table
{
    SEQUENCE$$    INT NOT NULL PRIMARY KEY,
    DMLTYPE$$     VARCHAR(1) DEFAULT 'I',
    pkey_col1     column_type,
    pkey_col...   column_type
);

    然后创建一个配置文件, 就可以让这个角本工作了. 为了适应MySQL和Oracle之间的情况, 还真的去掉一些Oracle特殊的, 如在字段名前加又引号, 在Oracle中是当作一个字段名的, 但在MySQL中就当作一个字符常量了.

    又经过一翻修改, 已经成功地用这种方式, 将数据从Oracle到MySQL进行互拷了. 又发现了一个新用途.

留言 (1)

啥时候写一个sybaseoracle的,俺用的着呀,哈哈

发表留言: