一、前言

最近需要把mysql数据库中的表迁移到DB2数据库,表内的数据用kettle可以实现迁移,但是建表语句却怎么也搞不好。
百度半天,发现并没有什么好的方法或工具能把mysql建表语句转成DB2。

Mysql建表语句想转成DB2,似乎只能自己手写。

然后就踩了一堆坑,用时2天,总算搞定了。

记录如下。

二、重点部分

1.DB2中,varchar必须写明长度限制,bigint与integer必须不写长度限制。(一个小坑)

2.mysql中,varchar(30)可以保存30个汉字;DB2中,varchar(90)才可以保存30个汉字。因此mysql迁移DB2时,对于有汉字的列,长度限制一定要记得*3。(一个大坑,本人亲测)

3.mysql与DB2字段对应关系样例(迁移时遇到的)

Mysql字段 DB2字段
varchar(15) varchar(45)
longtext CLOB(2G)
bigint(20) bigint
int(11) integer
datetime timestamp
bit(1) character(1)

4.mysql建表语句改DB2时,bit(1)改为varchar(1) for bit data,当insert数据时就会报错,所以bit(1)改为character(1)。

5.DB2不能修改已有的列类型,只能新增或删除列;而mysql是可以的。

6.DB2建表语句与mysql的区别是,mysql对于列的注释、索引,都是写在create()语句的括号里面的;但是DB2中列的注释、索引,是要单独写到外面的。(下方有样例)

7.因此DB2中,增加列的注释、索引的语句,参考下方的样例即可,可以单独执行。

三、sql样例

  • mysql建表语句样例
create table `course_info` (
`id` bigint(20) not null auto increment,
`course_id` varchar(15) character set utf8 collate utf8_general_ci NULL DEFAULT NULL,
`course_details` longtext character set utf8 collate utf8_general_ci NULL,
`course_duration` bigint(20) NULL DEFAULT NULL,
`play_times` int(11) NULL DEFAULT NULL comment '播放量',
`can_slide` bit(1) NULL DEFAULT NULL,
`up_date` datetime NULL DEFAULT NULL,
`can_share` varchar(2) character set utf8 collate utf8_general_ci NULL DEFAULT '0',PRIMARY KEY (`id`),INDEX `idx_id` (`course_code`) using btree,
INDEX `idx_slide_share` (`can_slide`,`can_share`) using btree
)ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=754
ROW_FORMAT=DYNAMIC
;
  • DB2建表语句样例
create table course_info (ID BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY,COURSE_CODE VARCHAR(45),COURSE_DETAILS CLOB(2G),COURSE_DURATION BIGINT,PLAY_TIMES INTEGER,CAN_SLIDE CHARACTER(3),UP_DATE TIMESTAMP,CAN_SHARE VARCHAR(6),PRIMARY KEY(ID)
);COMMENT ON TABLE COURSE_INFO IS '课程视频表';
COMMENT ON COLUMN COURSE_INFO.play_times IS '播放次数';create index idx_id on course_info(course_code);
create index idx_slide_share on course_info(can_slide, can_share);

●建表最重要的三点:

1.列
需要注意列类型、长度、初始值、是否允许为空、是否自增等。

2.注释
分为表注释和列注释。

3.索引。
mysql中可以选索引类型(Normal,Unique,Full Text)、索引方法(BTREE,HASH);DB2部分相似。

四、其它笔记

1.db2参数schema与database与user的区别
Oracle中,schema与user是同一个概念;
Mysql中,schema与database是同一个概念;
db2中,schema与database与user都不是同一个概念。

背景原因
●Oracle数据库是数据库本身管理用户的,即每一个要访问Oracle的用户都必须先在Oracle数据库里创建用户;而DB2并没有自己的用户帐号,DB2使用的是操作系统的帐号,DB2只需要对相应的操作系统账户进行授权,则该操作系统账户就可以访问DB2数据库。

●MySql中,下方sql:

select * from a.usertable;

其中,a是schema(纲要),也是database的名称;意思是查询a库的usertable表。

●DB2中,下方sql:

select * from a.usertable;

其中,a是schema(纲要),但不是database的名称,也不是用户;意思是查询某个库里的纲要为a里的usertable表;数据库连接url中配置的才是数据库名。

●DB2需要的参数样例:

数据库ip: 10.123.123.123
数据库名: dbname
用户名: user1
密码: user1
schema(纲要名): sname
表名: usertable

与mysql相比,多了schema;注意schema与database不是一个概念。

MySql建表语句迁移DB2方法总结(踩坑记录)相关推荐

  1. 三种常用的MySQL建表语句(转)

    MySQL建表语句是最基础的SQL语句之一,下面就为您介绍最常用的三种MySQL建表语句,如果您对MySQL建表语句方面感兴趣的话,不妨一看. 1.最简单的: CREATE TABLE t1(     ...

  2. mysql 建表语句示例_MySQL Create Table语句和示例

    mysql 建表语句示例 In this article, I am going to explain the MySQL CREATE TABLE statement with examples. ...

  3. MYSQL建表语句错误:1103-Incorrect table name

    如题,使用MYSQL建表语句时发生错误 首先简述一下MySQL建表语句: 举例如下: CREATE table `iauth ` (`iid` varchar(32) NOT NULL COMMENT ...

  4. 【Json】在线JSON转MySQL建表语句工具

    在线JSON转MySQL建表语句工具 在线JSON转MySQL建表语句工具 此工具可以将JSON对象转换成MySQL语句,支持复制和下载. 在开发过程中,使用此工具可以蛮方便的. 当然还有其他工具:( ...

  5. 在线JSON转MySQL建表语句工具

    在线JSON转MySQL建表语句工具 在线JSON转MySQL建表语句工具 JSON:(JavaScript Object Notation, JS对象简谱) 是一种轻量级的数据交换格式.它基于 EC ...

  6. mysql建表语句主键

    mysql数据库建表语句 createtableDMB_BDXX( IDbigintnotnull, MCVARCHAR(100)notnull, ZVARCHAR(100)notnull, ZXJB ...

  7. vue项目中将视频链接分享至推特的解决方法及踩坑记录

    vue项目中将视频链接分享至推特的解决方法及踩坑记录 将动态改变的视频链接分享至推特,并希望能直接在推特上播放视频的需求实现方法及踩坑记录 如果只要将文本或链接分享到推特,不需要推特识别图片/视频等媒 ...

  8. 完整版使用Shell脚本在多个服务器同时实现Mysql建表语句和删除表

    文章目录 一.创建表结构 二.删除表结构 前言:我们在项目开发过程中可能会遇到类似这样的需求,比如在多个Mysql服务器同时建表语句和删除表,这时候我们肯定不可能一个服务器一个服务器的创建,所以我们要 ...

  9. mysql运维高级_Mysql DBA 高级运维学习之路-mysql建表语句及表知识

    1.创建表 1.1 建表的基本命令语法 create table( , --- ) 1.2 创建student表 (1)在linzhongniao库中创建student表 mysql> use ...

最新文章

  1. Gentoo 安装日记 17(修改/etc/fstab)
  2. 【bzoj2423】最长公共子序列[HAOI2010](dp)
  3. 在log4j中使用自定义的Appender
  4. 如何分享文件_分布式文件存储系统如何分享文件
  5. NavigationBar 渐隐效果
  6. Altera的几个常用的Synthesis attributes(转载)
  7. 如何使用curl访问k8s的apiserver
  8. 避坑!使用 Kubernetes 最易犯的 10 个错误
  9. 诗与远方:无题(八)
  10. 使用Firebase、Angular 8和ASP.NET Core 3.1保护网站
  11. 38 NoSQL-memcached
  12. skip-grant-tables:非常有用的mysql启动参数
  13. LocBaml for .net 4.0
  14. Windows.document对象
  15. c python函数图像_python画正余弦函数图像?
  16. android system权限 工具,APK程序获取system权限的方法
  17. C++实现客户机(CLIENT)类
  18. 明源云客微信抢房技巧_明源云客车位线上开盘体验 - 微信抢房_软件抢房_网上选房_手机抢房_代抢房 - 爱抢房...
  19. 对 广义相对论 的 评价
  20. 华为写代码的这13年,成为了我最宝贵的人生历程

热门文章

  1. (二)01- DCloud平台 HTML5+ App开发——真机调试运行 夜神模拟器运行HBuilderX中的html文件 夜神模拟器运行App的基础功能示例-手机设备-分享功能-拍照功能
  2. 【JAVA项目实战】【图书管理系统】用户更新功能【Servlet】+【Ajax】+【Mysql】
  3. Sql server 如何得到汉字的声母
  4. 游戏中常用的设计模式总结
  5. MySQL5.7免安装教程
  6. Python恶搞无限弹窗程序
  7. sqlplus批量导入sql文件
  8. linux c mmap 写文件夹,利用mmap实现文件拷贝功能
  9. 父与子python 百度云_《父与子的编程之旅:与小卡特一起学Python第2版》pdf电子书百度网盘下载地址...
  10. POJ - 2386 (dfs简单应用)