论坛首页 Java企业应用论坛

另类的异构系统数据交互

浏览 2042 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-10-15  

    这学期大四,应聘上了深圳一家软件公司实习。现在上班也有一个半星期了吧,上个星期主要是熟悉公司现有项目的业务。昨天开始分配给我一项任务,就是做两个系统的数据交互,一开始还以为要用到webservice之类的东西,所以赶紧到网上查了一堆的资料。后来老大告诉我另外一个项目(数据提供源)的程序不能动,只限于数据库上的操作(源MS SERVER,目的ORACLE10G),那边服务器上提供FTP服务,所以刚开始考虑通过MS SERVER定时导出xml格式的数据,然后通过ftp把数据读取过来,然ORACLE的xml解析函数解析数据然后导入数据库。后来发现双方导入导出xml格式数据非常的麻烦,而且好象ORACLE10g的xml.parse函数有bug,所以只能考虑别的方式。

    今天决定试一试让MS SERVER通过BCP工具导出oracle格式的insert脚本,然后放到ftp服务器目录,通过sun.net.ftp.*包的工具把服务器上的脚本文件剪切过来,导入到oracle数据库中去。

    整个过程需要注意几个方面:

   1、MS SERVER的定时作业任务(即导出脚本)的时间需要控制在spring定时器的前面。

   2、因为涉及到多个表,所以父表的数据要先导出,再导子表数据,而且要设置相应的标志,0没有操作,1准备导出,2已经导出,首先要把父表为0的标志改为1,然后修改相应的子表标志为1,导出数据后改为2。

   查询顺序:select parent ,select children

   如果不设置1准备导出这个动作的话,那么读完parent表后,可能会有同时插入parent 、children表的操作,而parent 表已经导出,children表导出的脚本可能有跟新parent 数据关联,其脚本在导入到oracle的时候将报错。

   整个过程主要有三个:

   1、MS SERVER任务器定时调用存储过程导出insert脚本

   2、Spring定时任务器定时调用sun.net.ftp.*进行脚本读取操作

   3、Spring将脚本导入oracle执行

今天实验成功,不知道实际运行效果如何,期待中!

   发表时间:2008-10-16  
export -> ftp -> imp
0 请登录后投票
论坛首页 Java企业应用版

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