ora2mysql 转

Oracle和Mysql之间瞎折腾 

想把oracle中的表结构及部分数据导到mysql中,找到了工具,Navicat Premium,还有国内的5star database software下面的产品,ora2mysql,mysql2ora。ora2mysql免费版可以正常导数据,可以设置只导表结构,但导入到 mysql的表主键设置会丢失。Navicat Premium导过来的表,会保留表的主键设置,但Navicat Premium默认就是导数据的功能,没有只导入表结构的配置。5star database software下的收费软件能力有多强,就没有试过了。

      但两个数据库数据互导,最关键是字符集要一致,而且是安装时就指定好字符集。oracle使用的是gbk,我的mysql一开始安装时设的是utf-8, 后来发现与oralce的字符集不一致,就在新建了一个使用gbk字符集的database,导入数据发现中文变成了一堆问号。像这种mysql设置的是 utf-8下的使用gbk字符集的database,使用工具插入中文字符都报错:
SQL Error: 1366: Incorrect string value: ‘\xE8\xAF…’ for column ‘address’ at row 1

有 时候,表的某列字符集设置与sql语句的字符集不一致也会出现这样的错误,可以使用show full columns from table_name;检查数据表所有字段的状态,如果发现字符集不一致可以使用alter table table_name change name name varchar(100) character set utf8 collate utf8_unicode_ci not null default ”;来更改字段的字符集。

      据说可以修改my.ini中的字符集,但我修改后重启数据库发现没用,看来mysql和oracle一样,最好一开始安装的时候就设置好字符集,到后来再修改真是非常麻烦,还不确定一定能成功。

      重装mysql之后,可以正常导入数据了,但mysql安装过一次之后再安装的话,出现了很多错误,记录如下:

      错误1045:
root登录失败的问题,本来root是有密码的,在一次配置实例出错后,root无法登录,mysql服务可以启动。这时可以试试空密码,mysql默认root的密码是空。

      错误10061:
连接的时候,mysql还没启动。有时,服务启动有问题,可以mysqld-nt -remove 删除服务,再接着输入 mysqld-nt -install重新安装服务试试。

      字符集修改正常后,录入中文字符仍有错误1406,Data too long for column:
在my.ini里找到
sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
把其中的STRICT_TRANS_TABLES,去掉,
或者把sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION注释掉,然后重启mysql。

      root用户密码为空总归不好,有工具可以在用户管理中修改,或者使用下面方法:
Method 1:
在/usr/local/mysql/bin/下:
./mysqladmin -u root password ‘new_password’
一般安装时用此方法设置。

Method 2:
在mysql状态下:
mysql>UPDATE user SET password=PASSWORD(‘new_password’) WHERE user=’root’;
mysql>FLUSH PRIVILEGES;

Method 3:
mysql>SET PASSWORD FOR root=PASSWORD(‘new_password’);

知道root密码情况下修改root密码
mysqld启动的时候加上–skip-grant-tables,然后马上修改密码,修改后去掉–skip-grant-tables,然后就OK了。

      在找数据迁移工具过程中,了解了以下工具,有些没有尝试,但还是记录一下:
http://www.convert-in.com/ora2sql.htm,Oracle to MySQL,收费的;
http://dbconvert.com/convert-oracle-to-mysql-pro.php,DBConvert for Oracle & MySQL,也是商业软件;
另外oracle官方有迁移工具Oracle Migration Workbench,据说最新的SQL Developer集成了这个工具,但我没试出来该怎么用。

      ok,折腾完毕。Navicat Premium也是要收费的,功能感觉一般,5star database software的免费软件可以满足一般需求了。但如果要求高一些,又不想花钱,就只好自己编码实现了。

原文地址:https://www.cnblogs.com/kaka100/p/2889287.html