• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >DB2 > 通过 IBM Migration Toolkit 支持把数据从 MySQL 迁移到 DB2 和 Informix Dynamic Server

通过 IBM Migration Toolkit 支持把数据从 MySQL 迁移到 DB2 和 Informix Dynamic Server

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2017-06-28

匿名通过本文主要向大家介绍了通过 IBM Migration Toolkit 支持把数据从 MySQL 迁移到 DB2 和 Informix Dynamic Server等相关知识,希望本文的分享对您有所帮助
</div>

MySQL 迁移支持

在 2007 年初,IBM Migration Toolkit 2.0.2.0(MTK)实现了对从 MySQL 4.x 和 5.x 迁移到 DB2 和 Informix Dynamic Server(IDS)目标的有限支持。后续的 MTK 版本改进了最初的支持。改进的支持包括迁移某些 DDL 和 DML 语句。

MTK 支持对以下 MySQL SQL 语句的完全转换:

CREATE TABLE 语句

CREATE INDEX 语句

MTK 还在很大程度上支持以下 MySQL SQL 语句:

INSERT 语句

ALTER TABLE 语句

DROP TABLE 语句

SELECT 语句

DELETE 语句

UPDATE 语句

在下面几节中,首先讨论在从 MySQL 迁移到 DB2 时如何利用 MTK 支持,然后讨论从 MySQL 迁移到 IDS 的情况。

第 1 部分:MySQL 到 DB2 迁移支持

从 MySQL 到 DB2 的迁移支持只适用于 DB2 Database for Linux®, UNIX® and Windows® Version 8.2 或更高版本,以及 DB2 Database for iSeries® V5R3 或 V5R4。本文主要关注针对 DB2 Database for Linux, UNIX and Windows 的 MTK 支持。

CREATE TABLE 语句

CREATE TABLE 语句支持包括对 MySQL InnoDB 引擎支持的所有语法进行转换。这包括数据类型映射、数据提取和在 DB2 中部署数据。MTK 还支持 MyISAM 引擎,这种引擎的语法是相似的。但是,不支持应用于 fhs MyISAM 引擎的空间类型。

表 1 解释了 MySQL 数据类型如何映射到 DB2 数据类型。还指出了特定数据类型的可选映射(用户可以用这种映射覆盖 MTK 选择的默认映射)。

表 1. 数据类型映射

MySQL 数据类型DB2 数据类型
TINYINTSMALLINT
SMALLINTSMALLINT
MEDIUMINTINTEGER
INTINTEGER
INTEGERINTEGER
BIGINTBIGINT
REALDOUBLE
DOUBLEDOUBLE
FLOATDOUBLE
DECIMAL(p,s)

其中:

s > 0 && p >= s

s > 0 && p < s

s < 0

DECIMAL(min(p,31), min(s,31))

DECIMAL(min(p,31), min(s,31))

DECIMAL(min(p,31),0)

NUMERIC(p,s)

其中:

s > 0 && p >= s

s > 0 && p < s

s < 0

DECIMAL(min(p,31), min(s,31))

DECIMAL(min(p,31), min(s,31))

DECIMAL(min(p,31),0)

TINYINT UNSIGNEDSMALLINT
SMALLINT UNSIGNEDINTEGER

可选: SMALLINT

MEDIUMINT UNSIGNEDINTEGER
INT UNSIGNEDBIGINT

可选: INTEGER

BIGINT UNSIGNEDDECIMAL(20,0)

可选: BIGINT

REAL UNSIGNEDDOUBLE

可选: DOUBLE

DOUBLE UNSIGNEDDECIMAL(p,s)
FLOAT UNSIGNEDDOUBLE
DECIMAL UNSIGNEDDECIMAL(p,s)
NUMERIC UNSIGNEDDECIMAL(p,s)
DATEDATE
TIMETIME
TIMESTAMPTIMESTAMP
DATETIMETIMESTAMP

可选: TIME

YEARCHAR(4)
CHAR(l)CHAR(l)

可选: VARCHAR

VARCHAR(l)VARCHAR(l)

可选: CLOB

TINYBLOBBLOB(255)
BLOBBLOB(65535)
MEDIUMBLOBBLOB(16777215)
LONGBLOBBLOB(2000000000)
TINYTEXTCLOB(255)
TEXTCLOB(65535)
MEDIUMTEXTCLOB(16777215)
LONGTEXTCLOB(2000000000)

清单 1a 和清单 1b 说明 MySQL 数据类型和 create table 语句如何转换为 DB2 语法:

清单 1a. MySQL SQL - CREATE TABLE

CREATE TABLE tab1 (
col1 CHAR(20),
col2 VARCHAR(30),
col3 SMALLINT(20),
col4 TINYINT(30),
col5 MEDIUMINT(20),
col6 INT(10),
col7 INTEGER(20),
col8 BIGINT(20),
col9 REAL,
col10 DOUBLE,
col11 FLOAT,
col12 DECIMAL(10,4),
col13 NUMERIC(10,4),
col14 DATE,
col15 TIME,
col16 TIMESTAMP,
col17 DATETIME,
col18 YEAR,
col19 BIT
);

清单 1b. MTK 转换 - CREATE TABLE

CREATE TABLE tab1(
col1 CHAR(20),
col2 VARCHAR(30),
col3 SMALLINT,
col4 SMALLINT,
col5 INTEGER,
col6 INTEGER,
col7 INTEGER,
col8 BIGINT,
col9 DOUBLE,
col10 DOUBLE,
col11 DOUBLE,
col12 DECIMAL(10,4),
col13 DECIMAL(10,4),
col14 DATE,
col15 TIME,
col16 TIMESTAMP,
col17 TIMESTAMP,
col18 CHAR(4),
col19 SMALLINT
);

如果有一对一映射,MTK 就把所有列级和表级约束转换为等效的 DB2 语法。如果没有一对一映射,MTK 会把语法映射为 DB2 中的等效功能或者发出警告。清单 2a 演示 AUTO_INCREMENT 的转换。

清单 2a. MySQL SQL - 递增函数

CREATE TABLE tab2(
col1 INTEGER NOT NULL AUTO_INCREMENT,
col2 CHAR(20) NOT NULL,
PRIMARY KEY (col1)
);

注意:AUTO INCREMENT:整数列可以具有 AUTO_INCREMENT 属性。在 AUTO_INCREMENT 列中插入 NULL(推荐)或 0 值时,列会被设置为下一个序列值。通常,这个值是表中这个列中当前的最大值加 1。AUTO_INCREMENT 序列从 1 开始。

清单 2b. MTK 转换 - 递增函数

CREATE TABLE tab2(
col1 INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL,
col2 CHAR(20) NOT NULL,
PRIMARY KEY(col1)
);

注意:GENERATED ALWAYS AS IDENTITY:标识列使 DB2 能够为表中添加的每一行自动生成一个惟一的数字值。在创建表时,如果需要惟一地标识表中添加的每一行,那么可以在表中添加一个标识列。要想为表中添加的每一行生成一个惟一的数字值,应该在标识列上定义一个惟一索引,或者把它声明为主键。

清单 3a. MySQL SQL - PRIMARY KEY

CREATE TABLE tab3 (
col1 INT NOT NULL
col2 DATE UNIQUE,
col3 FLOAT PRIMARY KEY,
col4 INTEGER REFERENCES tab1(col1) ON DELETE CASCADE,
);

清单 3b. MTK 转换(一对一映射) - PRIMARY KEY

CREATE TABLE tab3(
col1 INTEGER NOT NULL,
col2 DATE NOT NULL UNIQUE,
col3 DOUBLE NOT NULL PRIMARY KEY,
col4 INTEGER REFERENCES tab1(col1) ON DELETE CASCADE
);

带有 KEY 列的 MySQL create table 语句会转换为两个单独的 DB2 语句:CREATE TABLE 语句和 KEY 列上的 CREATE INDEX 语句。

清单 4a. MySQL SQL - KEY

CREATE TABLE tab4 (
empid INTEGER NOT NULL AUTO_INCREMENT,
empname CHAR(20) NOT NULL,
KEY (empname)
);

清单 4b. MTK 转换(一对一映射) - KEY

CREATE TABLE tab4(
empid INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL,
empname CHAR(20) NOT NULL
);
CREATE INDEX mysqlidx ON tab4(empname);

CREATE INDEX 语句

支持把 CREATE INDEX 语句转换为 DB2 语法。

清单 5a. 用 MySQL SQL 创建索引

CREATE UNIQUE INDEX idx1 ON tab1(col1 ASC);
CREATE INDEX idx2 ON tab1 (col2 DESC);

清单 5b. 创建索引 - MTK 转换

CREATE UNIQUE INDEX idx1 ON tab1(col1 ASC);
CREATE INDEX idx2 ON tab1(col2 DESC);

数据转移

有几种将数据从 MySQL 迁移到 DB2 的方法。但是通过 MTK 的数据迁移实用程序时,它使用 DB2 LOAD 或 IMPORT 转移数据。关于数据迁移的更多细节,参见 MTK 文档。

INSERT 语句

支持把带 VALUES 子句的 INSERT DML 语句转换为 DB2 语法。不支持其他选项,比如带 SELECT 的 INSERT。

清单 6a. MySQL SQL - 带 VALUES 的 INSERT

CREATE TABLE tab6(c1 integer, c2 double);
INSERT INTO tab6 VALUES(1, 1.1);
INSERT INTO tab6(col1,col2) VALUES(1,1.1);
INSERT INTO tab6(col1,col2) VALUES (1,1.1),(2,2.2),(3,3.3);

清单 6b. MTK 转换 - 带 VALUES 的 INSERT

CREATE TABLE tab6(c1 integer, c2 double);
INSERT INTO tab6 VALUES(1,1.1);
INSERT INTO tab6(col1,col2) VALUES(1,1.1);
INSERT INTO tab6(col1,col2) VALUES (1,1.1),(2,2.2),(3,3.3);

受支持的 MySQL 语句

MTK 还在很大程度上支持以下 MySQL SQL 语句:

ALTER TABLE 语句

DROP TABLE 语句

SELECT 语句

DELETE 语句

UPDATE 语句

第 2 部分:MySQL 到 IDS 迁移支持

从 MySQL 到 IDS

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-28DB2 V9.7 锁事件监控
  • 2017-05-11DB2 常用命令速查(备忘)
  • 2017-06-28了解DB2数据库优化的几条策略
  • 2017-06-28DB2用户定义函数完成多种语言地排序
  • 2017-06-28在数据库应用项目的生命周期中充分利用 DB2 目录视图的最佳实践
  • 2017-06-28DB2常见问题1000问(之三)
  • 2017-06-28DB2 大事记
  • 2017-05-11DB2 SELECT语句高级用法
  • 2017-06-28将DWE Design Studio的功能集成到其他基于Eclipse平台的产品
  • 2017-06-28配置 DB2 pureScale 利用 DS8700 Metro Mirror 进行灾难恢复

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • DB2 最佳实践: 编写并调优查询语句以优化性能最佳实践
    • IBM Data Studio 简介,第 1 部分: IBM Data Studio 1.1.0 和 Eclipse 入门
    • Linux3.0下安装DB2 8.2
    • DB2 9和ASP.NET 2.0构建下一代应用程序
    • 经验总结:使用IBM DB2数据库的注意事项
    • 带你深入了解IBM DB2的通信与连接过程
    • DB2中的数据移动(一)
    • DB2 Express-C 9 DBA 和开发人员实验教程,快速实验 3:处理实例、数据库和配置
    • 分析 DB2 for Linux, UNIX, and Windows 中的锁等待情形
    • 使用 WebSphere Transformation Extender Database Interface Designer 和 Database Adapter 转换数据

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有