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

 

      在實際工作中,一張表,我們可能需要在Mysql數據庫中建表,又要在Oracle數據庫中建表。表中每個字段的數據類型、中文註釋、是否可爲NULL 問題,非常影響我們建表的效率。本篇文章,以Mysql數據庫表爲原表,通過PowerDesigner工具將其轉化成Oracle數據庫建表語句。

 

1、以 student(學生表)爲例,Mysql數據庫中建表語句如下所示。需要注意的是,若要相對完美的將Mysql數據庫錶轉換成Oracle數據庫表,需要嚴格按照以下Mysql數據庫表結構方式,標點符號都不能多、不能少。

 

     1.1、表名、字段名,需要去除 ` 符號  ;

     1.2、若字段定義過程中有 ' COLLATE utf8mb4_bin '  關鍵字,去掉 ;

     1.3、若字段定義過程中缺少 'NOT NULL'、 'DEFAULT NULL', 請添加 ;

 

-- 去掉的字符:`
-- 去掉的字符:COLLATE utf8mb4_bin 
-- stu_name varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '性別',

CREATE TABLE student (
  id int(8) NOT NULL COMMENT '主鍵',
  stu_name varchar(255) DEFAULT NULL COMMENT '學生姓名',
  stu_sex varchar(8) DEFAULT NULL COMMENT '性別',
  stu_age int(4) DEFAULT NULL COMMENT '學生年齡',
  stu_class varchar(255) DEFAULT NULL COMMENT '學生班級',
  stu_address varchar(255) DEFAULT NULL COMMENT '家庭住址',
  stu_mother varchar(255) DEFAULT NULL COMMENT '學生母親姓名',
  stu_m_age varchar(255) DEFAULT NULL COMMENT '學生母親年齡',
  stu_m_phone varchar(255) DEFAULT NULL COMMENT '學生母親電話',
  stu_father varchar(255) DEFAULT NULL COMMENT '學生父親姓名',
  stu_f_age varchar(255) DEFAULT NULL COMMENT '學生父親年齡',
  stu_f_phone varchar(255) DEFAULT NULL COMMENT '學生父親電話',
  create_date datetime DEFAULT NULL COMMENT '創建日期',
  update_date datetime DEFAULT NULL COMMENT '更新日期',
  start_date datetime DEFAULT NULL COMMENT '入學時間',
  stop_date datetime DEFAULT NULL COMMENT '畢業時間',
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='學生表';

 

 

2、 打開 PowerDesigner 軟件, 選擇 文件 ---> 反向工程 ---> Database ,如下圖1所示。

 

                                                                                    圖1

 

 

3、 之後,會彈出 New Physical Date Model 窗口。 在該窗口 "常規" 選項界面, 由於我們是將Mysql數據庫中表轉成Oracle數據庫中表,所以 "DBMS" 行選擇 "MySQL 5.0" 選項,如圖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" 窗口。 由於我們是將Mysql數據庫錶轉化成Oracle數據庫表,在這裏 "New 數據庫管" 一行選擇 "ORACLE Version 11g" 。 "Current 數據庫管" 直接手動輸入:ORACLE Version 11g  ,如下圖7所示。

 

                                                                                    圖7

 

 

8、使用快捷鍵: Ctrl + G,調用出 "Database Generation" 窗口,選擇生成Oracle建表語句文件的路徑,並對文件進行命名,如下圖8所示。

 

                                                                                    圖8

 

 

9、之後,會彈出 "Generated Files" 窗口,由log日誌、生成的sql腳本文件可知,程序運行成功。點擊 "Generated Files" 窗口中的 "關閉(C)" 按鈕後,會彈出 "結果列表" 窗口,該窗口無實際意義,直接關閉。 如下圖9、圖10所示。

 

                                                                                    圖9

 

                                                                                    圖10

 

 

10、打開生成好的SQL腳本,刪除語句: constraint PK_STUDENT primary key (id) , 並刪除一個多餘的逗號。如下圖11所示。  

 

                                                                                    圖11

 

 

11、將SQL腳本中所有的英文半角雙引號去掉,可使用NotePad++工具直接替換。如下圖12所示,在下圖12中,我將轉成Oracle建表語句的 student 表名改成了 student003. 因爲在我的Oracle數據庫中,已經存在了 student 表,這次爲了測試檢驗,故在此將表名更換。

 

                                                                                    圖12

 

 

12、在SQL語句中,添加給表建立中文註釋的命令、添加給表建立主鍵的命令。命令如下所示,截圖如圖13所示。


-- 新增命令,給表命名。
COMMENT ON TABLE student IS '學生表';

-- 新增命令,給表添加主鍵。
alter table student add constraint pk_student primary key(id);

 

                                                                                    圖13

 

 

13、經過上述處理之後,SQL腳本即可放到PL/SQL軟件中直接運行使用。 圖14、 圖15、 圖16 是效果展示圖。

Mysql數據庫錶轉成Oracle數據庫表的SQL語句如下所示:

/*==============================================================*/
/* DBMS name:      ORACLE Version 11g                           */
/* Created on:     2020/2/14 22:29:28                           */
/*==============================================================*/


drop table student003 cascade constraints;

/*==============================================================*/
/* Table: student003                                             */
/*==============================================================*/
create table student003 
(
   id                 INTEGER              not null,
   stu_name           VARCHAR2(255)        default NULL,
   stu_sex            VARCHAR2(8)          default NULL,
   stu_age            INTEGER              default NULL,
   stu_class          VARCHAR2(255)        default NULL,
   stu_address        VARCHAR2(255)        default NULL,
   stu_mother         VARCHAR2(255)        default NULL,
   stu_m_age          VARCHAR2(255)        default NULL,
   stu_m_phone        VARCHAR2(255)        default NULL,
   stu_father         VARCHAR2(255)        default NULL,
   stu_f_age          VARCHAR2(255)        default NULL,
   stu_f_phone        VARCHAR2(255)        default NULL,
   create_date        DATE                 default NULL,
   update_date        DATE                 default NULL,
   start_date         DATE                 default NULL,
   stop_date          DATE                 default NULL
);

-- 新增命令,給表命名。
COMMENT ON TABLE student003 IS '學生表';

-- 新增命令,給表添加主鍵。
alter table student003 add constraint pk_student003 primary key(id);


comment on column student003.id is
'主鍵';

comment on column student003.stu_name is
'學生姓名';

comment on column student003.stu_sex is
'性別';

comment on column student003.stu_age is
'學生年齡';

comment on column student003.stu_class is
'學生班級';

comment on column student003.stu_address is
'家庭住址';

comment on column student003.stu_mother is
'學生母親姓名';

comment on column student003.stu_m_age is
'學生母親年齡';

comment on column student003.stu_m_phone is
'學生母親電話';

comment on column student003.stu_father is
'學生父親姓名';

comment on column student003.stu_f_age is
'學生父親年齡';

comment on column student003.stu_f_phone is
'學生父親電話';

comment on column student003.create_date is
'創建日期';

comment on column student003.update_date is
'更新日期';

comment on column student003.start_date is
'入學時間';

comment on column student003.stop_date is
'畢業時間';

 

                                                                                    圖14

 

                                                                                    圖15

 

                                                                                    圖16

 

姊妹篇文章: PowerDesigner,如何將Oracle數據庫建表語句轉化成Mysql數據庫建表語句。     

 

 

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