0

我正在使用 Oracle 11g。我的要求是比较两个不同数据库的数据。每个数据库中大约有 350 个表,在这 350 个表中,大约有 40 个表有超过 100 万条记录。对于数据比较,我编写了一个 perl 脚本来使用哈希进行比较,并用少量文件进行了测试。另外,尝试使用 unix awk 命令来检查性能,并在这个论坛上询问了 unix 解决方案并得到了很好的帮助。

现在我的问题是找出从表中提取数据到文件的最佳方法。
两个数据库都有相同数量的表,每个表在两个数据库中都有相同数量的列,即两个数据库中的布局完全相同。
我认为和搜索的选项是
1) 使用 sqlloader - 我认为在这种情况下性能会很差
2) 使用数据泵 - 不确定我是否可以使用数据泵通过 sql 提取几组列并加载到文本文件中
3)使用批量收集——同上。是否可以从每个表的列集中提取每个表。如果是,怎么做。还有什么表现。
4) sqlplus 或其他任何东西。我无法在我的机器上为此下载任何软件。

用于从每个表中为两个数据库选择一组列的基本 sql 可以轻松完成。我正在寻找将数据导出到平面文件的最佳方法。
请建议

4

3 回答 3

0

最便宜的基本方法(对于开发人员来说肯定是)是比较事物集合而不是文件的字符串评估。没有什么可以比数据库本身更快(并且代码更少)比较事物的集合。使用数据库链接和明智地使用 MINUS 和 INTERSECT 运算符是实现这一目标的非常有力的手段。

于 2013-04-02T22:13:00.617 回答
0

尝试使用下面的 SQL,这应该是最快的方法,因为您将在数据库中工作。通过其他数据库中的 DB 链接访问该表。

select * from (( select * from Table_In_Schema1 减去 select * from Table_In_Schema2) union all ( select * from Table_In_Schema2 减去 select * from Table_In_Schema1) )

于 2013-04-03T12:05:19.603 回答
0

您可以使用 DBMS_COMPARISON 在数据库中执行此操作。

http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_comparison.htm#CHDHEFFJ

于 2013-04-01T19:02:45.943 回答