sql - 从 Oracle 迁移到 MySQL 的工具

标签 sql mysql oracle migration

我想将架构从 Oracle 迁移到 MySQl,那么是否有任何免费工具可用于此任务?

我在 Oracle SQL 脚本中有“创建表”语句,但它包含唯一约束和外键。 MySQL有MyISAM存储引擎,因此不支持外键。

如何解决这个问题?

Oracle 创建语句示例:

   CREATE TABLE channels 
(
  obt_id            NUMBER(19) PRIMARY KEY,
  discriminator     VARCHAR2(64) NOT NULL
                    CONSTRAINT check_channel_discriminator CHECK (discriminator IN ('CHANNEL','SALES_CHANNEL')),
  chan_id           VARCHAR2(255),
  description       VARCHAR2(255),
  name              VARCHAR2(255) NOT NULL,
  obt_version       VARCHAR2(255),
  fk2_channel       NUMBER(19)
                    CONSTRAINT fk_channel_channel REFERENCES channels(obt_id)
);

CREATE TABLE object_types 
(
  obt_id                    NUMBER(19) PRIMARY KEY,
  enum_value                VARCHAR2(64) NOT NULL,
  external_name             VARCHAR2(64) NOT NULL,
  description               VARCHAR2(255),
  business_validation       NUMBER(1) DEFAULT 0,
  start_date_time           DATE DEFAULT to_date('01011900','DDMMYYYY'),
  end_date_time             DATE DEFAULT to_date('01014712','DDMMYYYY'),
  mut_date_time             DATE DEFAULT SYSDATE,
  mut_user                  VARCHAR2(32) DEFAULT USER,
  CONSTRAINT                object_types UNIQUE (external_name,start_date_time,end_date_time)
);

最佳答案

我还没有听说过有任何工具可以帮助您满足您的要求。这并不意味着不存在,但是,采用现有的 Oracle 脚本并手动创建适当的 MySQL 脚本可能更容易且不易出错。在我参与过的每个项目中,DBA 都负责这种类型的数据迁移,而且他们总是手动完成。

编辑:

话虽如此,我在谷歌上进行了快速搜索,有一些程序声称可以做到这一点(需要付费)。例如:

Oracle to MySQL

Data loader

DBConvert

我显然会警告不要使用第三方工具,并确保在开始之前备份所有内容。

关于sql - 从 Oracle 迁移到 MySQL 的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1651331/

相关文章:

sql - 使用sql查询老化结构

php - 如何通过简单转义(不使用准备好的语句)防止 SQL (mySQL) 注入(inject)

oracle - T-SQL : is there a way to force conformance to ANSI SQL?

java - 如何在 Spring Data Jpa 中编写接受四种参数组合的选择查询

php - 子选择查询中的表名别名范围

mysql - 如何从 .NET 上的 varchar 获取下一个相关 ID?

MySQL 获取重复数据并合并唯一数据

sql - 如何在没有 DBA 权限的情况下杀死自己的 Oracle SQL session ?

sql - dba_jobs_running : table or view does not exist when trying to access from procedure

mysql - 获取MySQL数据库前N行的运行频率分布