大家好,又见面了,我是你们的朋友全栈君。
在实际工作中,一张表,我们可能需要在Mysql数据库中建表,又要在Oracle数据库中建表。表中每个字段的数据类型、中文注释、是否可为NULL 问题,非常影响我们建表的效率。本篇文章,以Oracle数据库表为源表,通过PowerDesigner工具将其转化成Mysql数据库建表语句。
1、以 oracle_to_student(学生表)为例,Oracle数据库中建表语句如下所示。需要注意的是,若要相对完美的将Oracle数据库表转换成Mysql数据库表,需要严格按照以下Oracle数据库表结构方式,标点符号都不能多、不能少。
1.1、表名、字段名,需要去除 ` 符号 ;
1.2、若字段定义过程中缺少 ‘NOT NULL’、 ‘DEFAULT NULL’, 请添加 ;
1.3、若Oracle表中含主键,需要添加命令设置主键。
代码语言:javascript复制-- 使用PowerDesigner将Oracle建表语句转换成Mysql建表语句。
create table oracle_to_student
(
stu_id NUMBER(16) NOT NULL,
stu_name VARCHAR2(32) NOT NULL,
stu_tuition NUMBER(9, 2) NOT NULL,
stu_address VARCHAR2(500) DEFAULT NULL,
stu_age NUMBER(3) DEFAULT NULL,
create_date DATE DEFAULT NULL
)
tablespace STT_TBS_DATA
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 1
next 1
minextents 1
maxextents unlimited
);
comment on table oracle_to_student
is '学生表';
-- 新增语句
alter table oracle_to_student add constraint pk_student001 primary key(stu_id);
comment on column oracle_to_student.stu_id
is '学生编码';
comment on column oracle_to_student.stu_name
is '学生姓名';
comment on column oracle_to_student.stu_tuition
is '学费';
comment on column oracle_to_student.stu_address
is '学生地址';
comment on column oracle_to_student.stu_address
is '学生年龄';
comment on column oracle_to_student.create_date
is '创建时间';
2、 打开 PowerDesigner 软件, 选择 文件 —> 反向工程 —> Database ,如下图1所示。
图1
3、 之后,会弹出 New Physical Date Model 窗口。 在该窗口 “常规” 选项界面, 由于我们是将Oracle数据库中表转成Mysql数据库中表,所以 “DBMS” 行选择 “ORACLE Version 11g” 选项,如图2所示。
图2
4、之后,会弹出 “Database Reverse Engineering Options” 窗口, 在该窗口点击 “Add Files (Ctrl N)” 图标,选择Mysql数据库student表sql脚本,如图3、 图4所示。
图3
图4
5、由步骤4操作后,PowerDesigner 软件界面如下图5所示。
图5
6、在 PowerDesigner 软件上,选择 “数据库” —> “Change Current DBMS…” 选项,如下图6所示。
图6
7、之后,会弹出 “Change DBMS” 窗口。 由于我们是将Oracle数据库表转化成Mysql数据库表,在这里 “New 数据库管” 一行选择 “MySQL 5.0” 。 “Current 数据库管” 一栏,会随着这一步操作完成后,自动更改成 “MySQL 5.0” ,如下图7、图8所示。
图7
图8
8、使用快捷键: Ctrl G,调用出 “Database Generation” 窗口,选择生成Mysql建表语句文件的路径,并对文件进行命名,如下图9所示。
图9
9、之后,会弹出 “Generated Files” 窗口,由log日志、生成的sql脚本文件可知,程序运行成功。点击 “Generated Files” 窗口中的 “关闭(C)” 按钮后,会弹出 “结果列表” 窗口,该窗口无实际意义,直接关闭。 如下图10、图11所示。
图10
图11
10、由Oracle建表语句中文字段含义可知,stu_id、stu_age 这2个字段为普通数字数据类型字段,stu_tuition 字段为金额数据类型字段,需保留2位小数。经过PowerDesigner软件生成后的Mysql建表语句,这3个字段的数据类型并非是我们需要的数据类型,因此需要更改。
将 stu_id numeric(16, 0) 更改为 stu_id bigint(16) ; 将 stu_age numeric(3, 0) 更改为 stu_age int(3); 将 stu_tuition numeric(9, 2) 更改为 stu_tuition decimal(9, 2) 。 如下图12、 图13 所示。
图12
图13
11、经过上述处理之后,SQL脚本即可放到Navicat软件中直接运行使用。 图14、图15是效果展示图。
Oracle数据库表转成Mysql数据库表的SQL语句如下所示:
代码语言:javascript复制/*==============================================================*/
/* DBMS name: MySQL 5.0 */
/* Created on: 2020/3/12 9:34:59 */
/*==============================================================*/
drop table if exists ORACLE_TO_STUDENT;
/*==============================================================*/
/* Table: ORACLE_TO_STUDENT */
/*==============================================================*/
create table ORACLE_TO_STUDENT
(
STU_ID bigint(16) not null comment '学生编码',
STU_NAME varchar(32) not null comment '学生姓名',
STU_TUITION decimal(9,2) not null comment '学费',
STU_ADDRESS varchar(500) default NULL comment '学生年龄',
STU_AGE int(3) default NULL,
CREATE_DATE datetime default NULL comment '创建时间',
primary key (STU_ID)
);
alter table ORACLE_TO_STUDENT comment '学生表';
图14
图15
参考文章: PowerDesigner,如何将Mysql数据库建表语句转化成Oracle数据库建表语句。
姊妹篇文章: PowerDesigner,如何将Mysql数据库建表语句转化成Oracle数据库建表语句。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。