mysql數據庫腳本改為oracle腳本


前段時間公司項目數據庫需要從mysql轉為oracle,所以需要修改下原有的mysql腳本。

有兩種方式:第一種,使用工具進行兩種數據庫的轉換。第二種,手動修改數據庫腳本。

第二種方法很笨,但能學習下mysql和oracle數據庫的sql語法區別。

現總結如下:

1.注釋修改,mysql的注釋可以直接寫在建表語句的字段后面,而oracle的注釋需要單獨寫個語句。
eg:
mysql:
CREATE TABLE `t_alarm_contact` (
`contact_id` varchar(32) NOT NULL COMMENT '聯系人編號',
`threshold_id` varchar(32) NOT NULL COMMENT '閾值設置編號',
PRIMARY KEY (`contact_id`,`threshold_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='預警聯系關系表';


oracle:
CREATE TABLE `t_alarm_contact` (
`contact_id` VARCHAR2(32) NOT NULL,
`threshold_id` VARCHAR2(32) NOT NULL,
PRIMARY KEY (`contact_id`,`threshold_id`)
);

COMMENT ON COLUMN t_alarm_contact.contact_id is '聯系人編號';
COMMENT ON COLUMN t_alarm_contact.threshold_id is '閾值設置編號';
COMMENT ON TABLE t_alarm_contact is '預警聯系關系表';

2.數據類型修改:
mysql oracle
varchar VARCHAR2
datetime DATE
bigint(32) NUMBER(32)
int(N) (N<6) INTEGER
int(N) (N>=8) LONG

3.索引轉換:
key->index
unique key -> unique index
eg:
mysql:
CREATE TABLE `t_txn_quick` (
`txn_no` varchar(64) NOT NULL COMMENT '平台交易流水號',
`txn_date` varchar(8) NOT NULL COMMENT '平台交易日期,取值:yyyyMMdd',
……
PRIMARY KEY (`txn_no`),
UNIQUE KEY `mcht_no` (`mcht_no`,`tran_no`),
KEY `i_txn_date` (`txn_date`),
KEY `i_txn_acct` (`txn_no`,`acct_no`),
KEY `i_pmc_status` (`pmc_code`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='快捷支付交易流水表';

oracle:
CREATE TABLE `t_txn_quick` (
`txn_no` VARCHAR2(64) NOT NULL,
`txn_date` VARCHAR2(8) NOT NULL,
……
PRIMARY KEY (`txn_no`)
);
CREATE UNIQUE INDEX ui_mcht_no_tran_no on t_txn_quick(mcht_no, tran_no);
CREATE INDEX i_txn_date on t_txn_quick(txn_date);
CREATE INDEX i_txn_acct on t_txn_quick(txn_no,acct_no);
CREATE INDEX i_pmc_status on t_txn_quick(pmc_code,status);

4.自增序列 AUTO_INCREMENT
`id` int NOT NULL AUTO_INCREMENT,

改為:
id VARCHAR2(64) NOT NULL,

5.將字段名稱左右的''去掉。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM