mysql 數據導入 oracle數據庫的嘗試


我有一個十分久遠的mysql數據庫腳本文件(.sql格式),現在我想將此數據庫導入oracle數據庫中,在網上搜集了一些解決辦法,其中利用Dbmover for mysql to oracle這個工具比較簡單,所以,就用了這個工具。

首先,將sql腳本中的數據庫結構與數據導入mysql數據庫中,利用source命令。可是,在導入的過程中,提示ERROR1366 錯誤

在網上搜了一些內容,得到的結論是sql文件的編碼與數據庫的字符集編碼不一致導致的。下面就開始了修改編碼,使它們能夠統一。

先將sql腳本利用記事本工具另存為UTF-8編碼格式

然后,將sql數據庫中的字符集編碼統一為utf8

最后利用source導入,成功。

可是,在cmd中查看表中的一些漢字信息時,還是出現來了亂碼,但是在navicat中,卻可以正確顯示。

我思考我的數據本身是沒有問題的,是不是mysql某個部分的編碼需要修改,所以對character_set_client、character_set_server、character_set_connection、character_set_results通通都試了一遍,將其值改為gbk,然后在cmd中用select查找顯示。最終,在測試character_set_results時,在cmd中查看漢字可正常顯示,在navicat中亦可正常顯示,問題解決。

下面,運行Dbmover for mysql to oracle工具:

 

首先,輸入mysql服務器的用戶名和密碼:

 

接着進行mysql的連接設置:

然后,選擇oracle服務器的連接方式,選擇客戶端模式即可,因為服務器就安裝在本機,客戶端oraclelistener默認是運行的。

 

 

然后,配置oracle的登錄名、密碼、服務名(數據庫名)。

最后,選擇要轉換的表,進行轉換即可。

但是,在第一次嘗試時,出現了8個錯誤。

經過檢查,發現主要是ORA-00910錯誤,到網上搜了下,解釋如下:

Oracle Database Error ORA-00910
ORA-00910 specified length too long for its datatype

問題
for datatypes CHAR and RAW, the length specified was > 2000; otherwise, the length specified was > 4000.

解決
use a shorter length or switch to a datatype permitting a longer length such as a VARCHAR2, LONG CHAR, or LONG RAW

我就開始檢查,轉換后的類型,有沒有超出其在oracle下預定的范圍,發現了varchar(10000)類型。而,varchar(10000)類型的,范圍是:

Variable-length character string having maximum length size bytes or characters. Maximum size is 4000 bytes or characters, and minimum is 1 byte or 1 character. You must specify size for VARCHAR2.
來自:http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements001.htm#i45694

 

所以,在先將mysql中哪些越界的字段修改 alter table操作,

然后重新轉換,這一次轉換是成功的。




免責聲明!

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



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