如何在数据库之间移动大量数据?

时间:2012-06-26 11:27:51

标签: performance jdbc db2

我需要比较来自两个数据库的数据(它们都是DB2),它们位于不同的服务器上,它们之间没有现有的连接。因为两个db都在生产中使用我不想重载它们,因此我将在我的本地机器上创建一个新的db(可能是MySQL),从两个DB2中提取数据,插入MySQL并在本地进行比较。

我想在Java中这样做,所以我的问题是如何在不重载生产数据库的情况下尽可能有效地完成此任务。我做了一些研究,并提出了以下几点:

  • 限制我将在初始SELECT语句中使用的列数
  • 调整ResultSet对象的获取大小(IBM DB2 JCC驱动程序的缺省值似乎为64)
  • 使用PreparedStatement对象预编译SQL

还有什么我可以做的,还是其他任何建议?

谢谢

2 个答案:

答案 0 :(得分:2)

DB2 for Linux UNIX和Windows将EXPORT实用程序包含在其运行时客户端中。可以将此实用程序指向z / OS上的DB2数据库,以快速将表(或查询结果集)排入客户端计算机上的flatfile。您可以选择是否分隔flatfile,固定宽度或DB2的专有IXF格式。您的z / OS DBA应该能够帮助您在工作站上配置客户端,并根据EXPORT实用程序的要求将必要的包绑定到z / OS数据库中。

在您的客户端上安装flatfiles之后,您可以根据自己的喜好对它们进行比较。

答案 1 :(得分:0)

对于地图缩小(hadoop)来说,这听起来很棒。一个作业有两个映射器,一个用于每个DB,一个减速器用于比较。它可以根据需要扩展到尽可能多的处理器,或者只在一台机器上运行。