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下预定的范围,发现了varchar(10000)类型。而,varchar(10000)类型的,范围是:
所以,在先将mysql中哪些越界的字段修改 alter table操作,
然后重新转换,这一次转换是成功的。
首先,将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操作,
然后重新转换,这一次转换是成功的。
相关文章推荐
- mysql 数据导入 oracle数据库的尝试
- 从mysql中将数据导入到oracle数据库中
- 将oracle数据库的数据导入mysql
- Mysql导入导出数据
- mysql 命令行导入导出数据
- Python导入txt数据到mysql的方法
- kettle 增量数据之sqlserver 转mysql 空值导入失败
- MySQL数据导入导出方法与工具mysqlimport
- mysql,命令导入\导出表结构或数据
- MySQL数据导入与导出(select|mysqldump)
- mysql学习小札(2)-- 数据备份、还原、导入导出方法的简单总结
- 外部数据导入Oracle数据库命令----sqlldr
- 使用MySQL Migration Toolkit快速将Oracle数据导入MySQL
- 数据批量导入Oracle数据库
- Excel连接到MySQL,将Excel数据导入MySql,MySQL for Excel,,
- mysql 数据库、数据表文件导入导出
- 关于Excel中的数据如何导入到oracle数据库中.
- mysql数据导入导出方法总结
- MySQL--将MySQL数据导入到SQL Server
- Spark-zeppelin大数据可视化导入Mysql