通过IBM Migration Toolkit的支持把数据从MySQL迁移到DB2和Informix Dynamic
2010-05-14 15:00:44 来源:WEB开发网清单 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)
);
更多精彩
赞助商链接