一、同类型数据库数据迁移很简单,直接使用expdp和impdp进行全库备份和导入即可,速度快,简单,具体操作可百度。
二、不同类型数据库之间进行数据迁移就会存在一些问题:如表结构会变化,语法不一样需要中间翻译一下等等,所以不能简单地使用dump方法。那么可以选择如下几个方法:
1.sqlload+bcp的方式(以从sybase数据库迁移数据到mysql数据库为例子)
首先将sybase数据库中所有表结构在mysql数据库中新建一份(这一步可对比两者建表语句语法特点,写脚本进行建表语句批量书写);
然后新生成一个sybase数据库里面所有表名的配置文件tablename.txt,以及分别连接sybase数据库以及mysql数据库的配置文件
sybase.ini和mysql.ini(便于后面的脚本能读取配置文件里面对应的用户名,密码等等信息);
然后批量对sybase的表进行如下操作:
连上并登入sybase数据库中,处理完日期的null值后,将表数据导入到temp_表名,这张临时表里
通过bcp方式将temp_表名的数据转换为txt格式的中间介质,并进行由gbk编码转换为utf8编码的过程
最后删除临时表 temp_表名,并使用sqlload方式,连接mysql数据库,导入数据。
该种方法比较普通,速度为:600G的数据大概40分钟完成迁移。
2.使用ETL工具:kettle
方法1需要编写代码,有一定的时间人力成本,所以使用方法2的工具可以便捷很多。
打开spoon.bat后,首先需要连接我们需要使用的sybase和mysql服务器(如果kettle7.0打开没有任务是没有办法新建数据库连接的,所以需要随便打开一个转换或者作业),双击DB连接或者新建数据库连接来连接需要的数据库。注意连接数据库如果提示失败,有可能是没有数据库驱动导致,下载驱动放在lib文件夹,重启kettle即可
连接数据库后可以在转换的DB连接中查看
准备工作做好,开始正式步骤,依次点击“工具”>“向导”>“复制多表向导",快速创建作业和转换
创建作业后会自动创建一个转换,存放路径和作业相同
最后点击运行,完成后在mysql中就会查看到复制的数据