我们现在开发的系统很多东西是定制的,比如表单、流程等,这样系统的迁移出现了问题,比如在公司为用户定制了一些功能,拿到用户那去的时候,就需要将定制的数据也拷贝过去,由于定制的信息比较杂,既有数据库表记录,也有文件,致使迁移数据经常发生问题,不是丢数据了,就是数据重复,导致定制的功能运行不起来。所以我就考虑为系统做一个针对定制的数据能够导入导出的程序,我想我们要操作的数据主要有两类,物理表记录和文件,其实很多系统的数据都是这些东西,所以我就想开发的这套程序不要仅能完成现在的需求,应该是灵活的、可扩展的,可以针对这一类的需求都能完成。经过仔细考虑和寻找可用的资源,我终于把这套程序作出来了,其中表数据操作我使用的是dbunit,感觉比较好用,而且支持很多数据库,其实dbunit不是干这个用的,使用来测试数据库程序操作的,不过干这个用更爽。现在导入导出我们系统的定制数据已经没有问题了,对于其他一些简单的表数据或文件备份也没有问题,如果将来出现更复杂的需求,或出现新的备份对象,我觉也应该可以扩展完成。下面我说一下我的实现思路。这套程序目前支持两大类备份源:数据库的表记录、文件,文件又分为Properties文件和xml文件。考虑实现思路是,将需要备份或恢复的数据源按指定的格式列成一个“清单“(定义清单格式),程序解析清单(backuplistparser), 解析的过程就是将需要备份的内容细化成无数的备份源(backupsource),形成集合,在解析过程中有可能调用每个备份源的过滤器(filter)或者备份源之间的关联公式(Relationship)。解析完成后,对所有的备份源进行循环,每个备份源将自己传给相应的备份工作者(bakcupworker),通过回调工作者的backup()方法完成备份, 恢复也是一样,调用工作者的import()方法完成。下面我对程序清单和主要的类简要说明一下:备份清单 程序清单是一个xml文件,包含两方面的信息,一是环境参数,比如数据库连接信息、需要备份的数据路径的等;二就是需要备份源的列表,每一个备份源又包含自己的描述信息、过滤条件,和别的备份源的关联条件。下面是一个例子:
//环境信息
//系统文件的路径,比如C:/WebSphere/AppServer/installedApps/lc-ecp/v3log.ear/v3log.war/eaiPath
I:/eaipath
//存放导出数据的路径
c:/temp
//数据库连接信息,目前只支持db2,用的是jcc连接
lc-ecp
v3ecpdb
db2admin
ourecp
//备份源列表//数据库表processtype
//过滤器,值用‘,’分割,仅备份字段id值等于P1119505745079或P1115713181485 //可以不设置过滤器
导入导出我们系统数据的设计思路
最新推荐文章于 2024-04-02 22:45:20 发布
<script type="text/javascript">
</script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript">
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript">
</script><script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
]]>