• 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操作,

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



  • 相关阅读:
    poj 1475 Pushing Boxes 推箱子(双bfs)
    poj 1806 Frequent values(RMQ 统计次数) 详细讲解
    poj 2846 Repository
    poj Ping pong LA 4329 (树状数组统计数目)
    POJ 1962-Corporative Network (并查集)
    hdu 2217 Visit
    nyoj304 节能
    与R纠缠的两件事——rownames和子集--转载
    七步精通Python机器学习--转载
    win10专业版激活(亲测可用)
  • 原文地址:https://www.cnblogs.com/haore147/p/2419936.html
Copyright © 2020-2023  润新知