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


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

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

