论坛首页 Java企业应用论坛

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

浏览 1706 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-03-17   最后修改:2009-03-18
写了一个小玩意,假想的需求就是在两个数据库之间进行数据的迁移。当然两个数据库中的表结构会存在不同,比如想把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下体验一下,呵呵。
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics