簡體   English   中英

從Oracle中的表將大量數據導出到平面文件

[英]Export Huge Volume of Data to flat files from tables in Oracle

我正在使用Oracle 11g。 我的要求是比較兩個不同數據庫的數據。 每個數據庫中大約有350個表,在這350個表中,大約40個表的記錄超過100萬。 為了進行數據比較,我編寫了一個perl腳本以使用哈希進行比較,並用很少的文件進行了測試。 此外,還嘗試使用unix awk命令檢查性能,並要求此論壇提供有關unix解決方案的幫助,並獲得了出色的幫助。

現在,我的問題是找出從表中提取數據到文件的最佳方法。
兩個數據庫都有相同數量的表,並且每個表在兩個數據庫中都有相同數量的列,即兩個數據庫中的布局完全相同。
我認為和搜尋的選項是
1)使用sqlloader-我認為這種情況下性能會很差
2)使用數據泵-不知道我是否可以通過使用數據泵通過sql提取幾組列並將其加載到文本文件中
3)使用批量收集-與上述相同。 是否可以從每個表的列集中提取每個表。 如果是,該怎么辦。 還有什么表現。
4)sqlplus或其他任何東西。 我無法在我的機器上下載任何軟件。

從兩個數據庫的每個表中選擇一組列的基本sql可以輕松完成。 我正在尋找將數據導出到平面文件的最佳方法。
請建議

您可以使用DBMS_COMPARISON在數據庫中進行操作。

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

最便宜的基本方法(對於開發人員來說肯定是最便宜的)是比較事物集而不是文件的字符串求值。 沒有什么可以比數據庫本身更快(和更少的代碼)比較事物集的。 為此,使用數據庫鏈接以及明智地使用MINUS和INTERSECT運算符是非常有效的手段。

嘗試使用下面的SQL,這將是最快的方法,因為您將在數據庫中進行操作。 通過其他數據庫中的DB鏈接訪問表。

選擇*從((從Table_In_Schema1選擇*減去從Table_In_Schema2選擇*)並集所有(從Table_In_Schema2選擇*減去從Table_In_Schema1選擇*))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM