mysql數(shù)據(jù)庫如何轉(zhuǎn)移到oracle
mysql數(shù)據(jù)庫轉(zhuǎn)移到oracle
在研發(fā)過程中,可能會用到將表數(shù)據(jù)庫中的表結(jié)構(gòu)及數(shù)據(jù)遷移到另外一種數(shù)據(jù)庫中,
比如說從mysql中遷移到oracle中,
常用的方法有好些,如下
1、使用powerdesigner,先連接mysql然后生成mysql的pdm,再把mysql的pdm生成cdm(注:如果設(shè)計階段有cdm那更好,可以直接使用,因為cdm是和具體數(shù)據(jù)庫類型無關(guān)的,所以需要轉(zhuǎn)為這個中間模型),最后把cdm生成oracle類型的pdm,最后將oracle類型的pdm轉(zhuǎn)為sql文件完成!
2、在使用上面第一種方法的時候可能會失敗,失敗的原因有很多種,不具體寫了,
如果失敗了,還可以使用第二種方法,懶人方法,使用Navicat Premium這個工具,Navicat Premium這個工具有個拖拉的功能,
即:在Navicat Premium上連接mysql和oracle,選擇mysql中的表,然后拖拉到oracle的表目錄下,然后點擊確定拷貝表結(jié)構(gòu)和數(shù)據(jù)即可!
如下圖:


3、在使用上面第二種方法的時候數(shù)據(jù)庫表及數(shù)據(jù)可能是拷貝成功了,但是在使用的時候,直接查詢表,
如:select * from sys_role 可能會提示表不存在,這是因為拷貝過去的時候會自帶oracle用戶及雙引號,
所以需要這樣查詢:
select * from "C##SWYTH_YS"."SYS_ROLE";?
如果要去除這些雙引號之類的直接查詢,可以這么玩:
在第二中方法的基礎(chǔ)上,使用Navicat Premium將已經(jīng)拖拉拷貝到oracle數(shù)據(jù)庫的表及數(shù)據(jù)導(dǎo)出到sql文件中(即:從oracle中導(dǎo)出),然后在導(dǎo)出的sql文件中修改sql腳本語句,主要修改兩個地方(全文替換),很簡單的,
1)將"C##SWYTH_YS"." 就把用戶替換為空,
2)再將雙引號也替換為空,
替換后如下圖:

替換完成后!就很清爽了,然后把已有的oracle表刪掉,把修改后的sql文件腳本重新導(dǎo)入,這樣就可以正常使用sql查詢了!
4、以上三種方式數(shù)據(jù)量小的話可以這么玩,如果數(shù)據(jù)很大就比較麻煩了,有可能失敗,網(wǎng)上也提供了一些直接轉(zhuǎn)換的小工具下載,可以搜索試試,實在不行就只能一個一個表的單獨修改了,先修改表結(jié)構(gòu),再拷貝數(shù)據(jù);
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
將MySQL從MyISAM轉(zhuǎn)換成InnoDB錯誤和解決辦法
原來自己用的是為了裝的, 所以在設(shè)置database usage(如下圖1)的時候按照discuz官方的建議,選的都是Non-Transactional Database Only(只支持MyISAM數(shù)據(jù)引擎的非事務(wù)數(shù)據(jù)庫),用MyISAM數(shù)據(jù)庫,還沒涉及到需要InnoDB,因此打算直接不加載INNODB引擎。2011-09-09

