您的位置:首页 > 数据库 > SQL

如何从把mysql的数据迁移到oracle上来---------Oracle SQL Developer技术

2016-02-05 14:02 906 查看

1.安装Oracle SQL Developer和所需jdk(自己百度)不然会出现





2.设置首选项的时间



3.需要一个权限很多的中间Oracle数据库作为媒介,让mysql数据库生成转换模型

   添加mysql数据源



添加oracle为中间介质



4.选择mysql,右键捕获模型,然后断开oracle,重新连接在捕获的模型就会出现



4.右键捕获模型,选择转化为oracle数据模型,则会出现





5.右击某个表,选择生成(test01是数据库名和数据库密码,ddd是表)

SET SCAN OFF;
PROMPT Creating User test01 ...
CREATE USER test01 IDENTIFIED BY test01 DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
GRANT CREATE SESSION, RESOURCE, CREATE VIEW TO test01;
connect test01/test01;

create or replace PACKAGE mysql_utilities AS
identity NUMBER(10);
END mysql_utilities;
/

/

-- DROP SEQUENCE ddd_id_SEQ;

PROMPT Creating Sequence ddd_id_SEQ ...
CREATE SEQUENCE  ddd_id_SEQ
MINVALUE 1 MAXVALUE 999999999999999999999999 INCREMENT BY 1  NOCYCLE ;

-- DROP TABLE ddd CASCADE;

PROMPT Creating Table ddd ...
CREATE TABLE ddd (
id NUMBER(10,0) NOT NULL
);

PROMPT Creating Primary Key Constraint PRIMARY on table ddd ...
ALTER TABLE ddd
ADD CONSTRAINT PRIMARY PRIMARY KEY
(
id
)
ENABLE
;

connect test01/test01;

CREATE OR REPLACE TRIGGER ddd_id_TRG BEFORE INSERT OR UPDATE ON ddd
FOR EACH ROW
DECLARE
v_newVal NUMBER(12) := 0;
v_incval NUMBER(12) := 0;
BEGIN
IF INSERTING AND :new.id IS NULL THEN
SELECT  ddd_id_SEQ.NEXTVAL INTO v_newVal FROM DUAL;
-- If this is the first time this table have been inserted into (sequence == 1)
IF v_newVal = 1 THEN
--get the max indentity value from the table
SELECT max(id) INTO v_newVal FROM ddd;
v_newVal := v_newVal + 1;
--set the sequence to that value
LOOP
EXIT WHEN v_incval>=v_newVal;
SELECT ddd_id_SEQ.nextval INTO v_incval FROM dual;
END LOOP;
END IF;
-- save this to emulate @@identity
mysql_utilities.identity := v_newVal;
-- assign the value from the sequence to emulate the identity column
:new.id := v_newVal;
END IF;
END;

/




6.在连接oracle后情况下,运行代码,然后建立新的数据库连接





7.在转换的模型中右键选择移动数据,则会把mysql中的数据转移到test01中来



有疑问可留言,嘿嘿,马上就放假过年了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: