我在两地(A、B)有两个相同结构的数据库,其中有部分表需要做到每天同步,具体是每天凌晨将A地的指定表中的数据同步到B地。我用JDBC能够连接两个数据库,但是SQL Server直接连接出问题,所以这个要求我希望用Java程序解决。
我现在用XML文件指定需要同步的表名,比较笨的方法是,删除目标数据库指定表的所有数据->使用ResultSet获得源数据库指定表的所有数据->并获得字段的数据类型->然后对每条记录做循环,根据数据类型生成SQL插入语句,插入目标数据库。
但是,1、觉得这样做很繁琐,2、担心效率和执行时间。所以想问问有没有更好的思路?

解决方案 »

  1.   

    SQLServer里面通Data文件不还有个Log吗?Log里记录的是数据库的修改,也就是说在AB两个数据库一样的情况下,A数据库运行了一天,如果想使AB同步只需得到A运行那天的Log文件即可,Log很小的。
    只是理论上可以这样做,实际的操作楼主还要多查查资料
      

  2.   

    远程仿问是指用SQL Server直接的访问吧?我也不知道为什么不行。所以才考虑用Java解决。
      

  3.   

    不用java写代码了,用sql语句就可以,你可以在a服务器上,做一个job,然后写一些sql不用行了
      

  4.   

    因为A地的企业管理器无法连接到B地,所以我认为SQL语句应该也无法做到。当然,可能也会有人提议到B地去试一下。但是毕竟两地都属于我们的客户,我们没有那么多精力两处挨个去做测试。而且如果突然想到一个主意就出差一趟去试试,不到半小时失败后就回来。公司不会批准花这么大的成本去做尝试,而且给客户也会留下一个我们无法解决问题的印象。当然,也请不要提议让我们在公司模拟两台机器以SQL方式互相连接了。因为我们根本没搞明白为什么jdbc是连接成功的,到了企业管理器为什么就连接失败了。当然,当时不是我去做的,所以我也不敢肯定是不是操作失误。但过去的同事也不是新手,应该不会出现低级错误。至少,现在两地的jdbc是证明可以互相访问数据库的,所以我们才打算用Java的方式解决这个问题。请在Java的范围内,提出更好的解决方案,能够不用逐个插入单条记录。