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

mysql 数据导入 oracle数据库的尝试

2013-10-23 15:07 459 查看
我有一个十分久远的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操作,



然后重新转换,这一次转换是成功的。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息