Fwd: Conversão de MySQL para Oracle e vice-versa

2 views
Skip to first unread message

Pedro Viegas

unread,
Sep 16, 2020, 5:51:30 AM9/16/20
to DIF2 Mailing list
Bom dia

Estou a criar scripts de BD na DIF que necessitam de ser em Oracle e MySQL.
Encontrei esta ferramenta online que ajuda bastante.


Exemplo de MySQL

DELIMITER $$
CREATE TABLE IF NOT EXISTS DIF.DATA_INTEGRATION_RECORD
(
ID INT(10) NOT NULL AUTO_INCREMENT,
DATA_INTEGRATION_ID INT(10) NOT NULL,
ORIGINAL_FIELD_ID VARCHAR(255) NOT NULL,
VALUE TEXT,
INTEGRATED BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY (`ID`),
CONSTRAINT `FK_DATA_INTEGRATION` FOREIGN KEY (`DATA_INTEGRATION_ID`) REFERENCES DATA_INTEGRATION (`ID`)
) ENGINE = INNODB
DEFAULT CHARSET = UTF8
COLLATE = UTF8_BIN$$


Conversão para ORACLE
CREATE TABLE DIF.DATA_INTEGRATION_RECORD
(
ID NUMBER(10) NOT NULL,
DATA_INTEGRATION_ID NUMBER(10) NOT NULL,
ORIGINAL_FIELD_ID VARCHAR2(255) NOT NULL,
VALUE CLOB,
INTEGRATED CHAR(1) DEFAULT FALSE NOT NULL,
PRIMARY KEY (ID),
CONSTRAINT FK_DATA_INTEGRATION FOREIGN KEY (DATA_INTEGRATION_ID) REFERENCES DATA_INTEGRATION (ID)
)
;

-- Generate ID using sequence and trigger
CREATE
SEQUENCE DIF.DATA_INTEGRATION_RECORD_seq START
WITH 1 INCREMENT BY 1;

CREATE OR
REPLACE TRIGGER DIF.DATA_INTEGRATION_RECORD_seq_tr
BEFORE
INSERT
ON DIF.DATA_INTEGRATION_RECORD
FOR EACH ROW
WHEN (NEW.ID IS NULL)
BEGIN
SELECT DIF.DATA_INTEGRATION_RECORD_seq.NEXTVAL
INTO :NEW.ID
FROM DUAL;
END;
/

Notas a reter:
  • Detectou o AUTO_INCREMENT do MySQL e criou uma sequencia e um trigger de Oracle para preenchimento do ID
  • Alterou o tipo de MySQL TEXT para o CLOB de Oracle
  • Alterou o tipo de MySQL BOOLEAN para o CHAR(1) de Oracle

Pareceu-me interessante.
Fica o conhecimento.

Com os melhores cumprimentos,

Luis Pinto
Team Leader Web


Reply all
Reply to author
Forward
0 new messages