基于spring调用ruby进行oracle数据间的迁移

写了一个小玩意,假想的需求就是在两个数据库之间进行数据的迁移。当然两个数据库中的表结构会存在不同,比如想把A库里的两个表的数据导入到B库里中的一个表里,或者把很复杂的一个查询结果导入到新的库里。如果相同的表的话,完全可以exp/imp.

大概的思路是利用oracle的sqlplus调用一个自己手写的sql,把sql的查询结果生成的数据保存起来,然后,调用sqlldr,利用控制文件,插入到新的库里. 当然我的想法是利用spring和jruby来调用一个ruby来实现。
这种导入导出的速度是我看重的。


项目里有一个银行托收返盘文件,到时候需要到进入库,我现在的想法也是利用这种方式来导入,我想要的是执行的效率。不知道是不是能实现,坛子里的人有这么做过的吗?麻烦通告一声这么做是不是可行?


PS:上传的文件目录说明

control 文件夹下放着的是控制文件,根据自己的需要添加自己的控制文件
log 文件夹下会保存使用sqlldr导入数据时的日志
outputfile 文件夹下保存生成数据的文本文件。这些文件最终会被导入新库
outputsql 文件夹下会生成一个sql执行的中间文件,无需关心.
sql 文件夹下放着的是生成outputfile文件夹下的数据sql,可以自行修改sql。但是需要注意sql的 格式与写法

env_oracle_input.bat 导入数据库的 用户名/密码@sid
env_oracle_output.bat 导出数据库的 用户名/密码@sid
sqlldr_exp.bat 导出批处理,可以导出多个收起来sql查询结果
sqlldr_imp.bat 导入批处理.
transfer.rb 调用sqlldr_exp.bat 和 sqlldr_imp.bat两个批处理程序.

没装ruby的可以自己手动调用 sqlldr_exp.bat 和 sqlldr_imp.bat 进行测试。


PSPS:在linux上跑的shell没写,spring调用也没写。不过都不影响在windows下体验一下,呵呵。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值