如今数据库众多,当需要从一个数据库的数据数据和结构需要转移到另外一个数据库中时,一般是通过第三方工具进行转化和转移,本文以mysql数据库移植到oracle为例,mysql以数据库为sh10000_bbs,用户以sh10000_bbs,oracle数据库用户以sh10000_bbs为例,进行演示。过程中,最好mysql数据库的用户名和oracle的用户名保持一致。
预备条件:
1. oracle sql developer工具,当你计算机安装好oracle 11g服务端时,自带了此工具,如没有,请去管网进行下载:http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html
2. mysql jdbc jar包,下载地址:http://www.mysql.com/products/connector/
3. jdk,如果你没有安装jdk,你觉得你有必要来csdn吗?
mysql创建用户和数据库:
1. 运行cmd,切换到mysql安装目录:cd C:\Program Files\MySQL\MySQL Server 5.5\bin
2. 启动mysql服务:net start mysql
3. 登录mysql:mysql -u root -p 输入密码:root,回车,如看到mysql>表示登录成功
4. 创建数据库:create database sh10000_bbs; (使用:show database;查看所创建的数据库)
5. 创建用户:create user 'sh10000_bbs'@'localhost' identified by 'sh10000_bbs';
(查看用户: select distinct concat('User:''',user,'''@''',host,''':') as query from mysql.user;)
6. 赋权:grant all on sh10000_bbs.* to 'sh10000_bbs'@'localhost';
(说明: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL.;databasename - 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*)
7. 使用sh10000_bbs登录mysql:mysql -u root -p 输入密码:root,回车,如看到mysql>表示登录成功
8. 查看数据库:show databases; 如看到sh10000_bbs,表明用户创建成功,可以使用sh10000_bbs数据库
9. 查看数据库表: show tables; 如能看到表结构,表明用户可以查看表和数据了
oracle创建用户:
1. 通过plsql使用dba账号登录oracle,
2. 创建用户:create user sh10000_bbs identified by sh10000_bbs default tablespace TSH10000_BBS; (表空间TSH10000_BBS已经创建,如没有,自行创建或者使用默认 的表空间)
3. 授权: grant resource,connect to sh10000_bbs; grant dba to sh10000_bbs; (这里,方便测试,使用户sh10000_bbs有管理员权限)
4. 验证用户是否成功: 通过plsql,看sh10000_bbs是否可以登录就可以了
移植步骤:
1. 打开sql developer工具(打开时,先让你选择jdk,最好选择oracle自带的jdk,另外,sql developer工具也会对jdk版本有要求,请大家确认好自己的电脑环境,下载合适的版本),首先,创建一个mysql连接(创建连接时,如果没有像mysql的按钮时,请在“工具-首选项中选择jdbc驱动,见图3”),用于连接mysql数据库。点击“测试”,用于当前连接是否成功,最后,点击“连接”,就可以创建连接了。如下图:
图1
图2
图32.创建oracle数据库连接,就是目标数据库连接,如下图4。 如看到图5,表示源连接和目标连接都创建成功了:
图4
图5
3. oracle连接中,右键--移植资料档案库--关联移植资料档案库,此时会弹出对话框,等关联成功后,会有成功提示信息
图6
图7
图8
4. mysql连接中,右键--捕获MYSQL,如下图:
图9
5. 弹出捕获方案对话框,如下图:
图10
6. 捕获方案成功后,会有捕获模型和转换模型两个窗口,如下图
图11
7. 在捕获模型窗口中选择源数据库,右键--转化为Oracle模型(O),弹出“设置数据映射”窗口,大家也可以添加新规则,使mysql相应的数据类型转化为oracle数据类型,点击“应用”,弹出“转换数据库”窗口,如下图:
图12
图13
图14
8.模型转换后,会出现“转换模型窗口”,下面有个Converted连接名称,而且把mysql中的sh10000_bbs库下的表同步过去了。如下图:
图15
9. 选择转换模型中的sh10000_bbs数据库,点击表,选择表,右键--生成,转化成功后,会生成一个oracle对应的sql脚本,如下图:
图16
图17
图18
10. 根据需要删除一些不必要的脚本,例如:函数、触发器、顺序号,mysql默认的时间转换等。还要修改执行过程中错误的语句,具体要看执行时的错误信息。
全选所有脚本,点击“执行脚本”按钮,选择数据库连接,执行后,记得要点击“提交”,对应的“脚本输出”窗口中会显示对应的执行信息。提交后,检测一下表数量是否一样。如下图所示:
图19
图20
图21
图22
11. 在我本地数据库中就可以看到这些表结构了,其中MD_开头的表先不理会,这些表全是mysql转化成oracle中间的一些操作表。如下图:
图23
12. 移植数据,表结构已经同步成功了,接下来就是把数据也同步过去。选择菜单:移植-->移植数据,在弹出框中选择源连接,目标连接,转换的模型。点击“确定”,接下来,就可以在对话框中看到同步的数据表以及条数信息了。如下图:
图24
图25
图26
13. 在我本地数据库sh10000_bbs用户下中,有一张日志表的数据就同步过来了,如下图:
图27
14. 最后,选中“oracle”连接,右键--移植资料档案库--删除移植资料档案库,这样,就可以删除以MD_开头的表了。此时,点击oracle连接下的表,表都同步过来了
图28
图29
备注:此步骤只是数据和表结构同步,不太建议在线网上同步
如有问题,大家可以联系我,邮箱:jucks1126@163.com