PowerDesigner,如何將Oracle數據庫建表語句轉化成Mysql數據庫建表語句。

      在實際工作中,一張表,我們可能需要在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表中含主鍵,需要添加命令設置主鍵。
 

-- 使用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語句如下所示:

/*==============================================================*/
/* 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數據庫建表語句。    

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章