2013-04-01 55 views
0

我正在使用Oracle 11g。我的要求是比較兩個不同數據庫的數據。每個分區大約有350個表格,在這350個表格中,約40個表格有超過100萬個記錄。爲了進行數據比較,我編寫了一個perl腳本來使用散列進行比較,並用少量文件進行測試。另外,嘗試使用unix awk命令來檢查性能,並在unix解決方案上詢問此論壇並獲得了極好的幫助。將大量數據導出到Oracle中表格的平面文件中

現在我的問題是要找出從表格提取數據到文件的最佳方法。
兩個數據庫都有相同數量的表,每個數據庫在兩個數據庫中都有相同的列數,即數據庫中的佈局完全相同。
選項,我認爲,搜查是使用
1)SQLLOADER - 我認爲業績將使用數據泵壞在這種情況下
2) - 不知道我是否可以使用數據泵通過SQL提取幾組列的和加載到文本文件
3)使用批量收集 - 同上。是否有可能提取每個表和每個表的一組列。如果是的話,該怎麼辦。還有什麼是性能。
4)sqlplus或其他任何東西。我無法在我的機器上爲此下載任何軟件。

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

+1

是數據兩個不同的Oracle數據庫?如果是這樣,爲什麼要麻煩生成和比較文件?爲什麼不直接在Oracle中比較數據? –

+0

這種方法被認爲是較早的,但是爲了比較具有數百萬行的一行表的列以及來自每個數據庫的350個表的列表,即總共700個表。假設一條記錄包含50個屬性,並逐行比較每個屬性,然後在文本文件中生成輸出將是一件昂貴的事情。報告輸出(perl正在生成)的示例是TableName,RowNumber,ColumnName,ColumnValueDB1,ColumnValueDB2,因此思考腳本作爲文件處理的速度更快。另外,在數據庫上,這個操作將花費大量時間和昂貴。 – user2223335

+1

我認爲生成文件然後比較使用Toad或SQL Developer比較工具要困難得多。 – Art

回答

0

的根本途徑是最便宜的(對開發商肯定)是比較組的事情,而不是文件的字符串評估。沒有任何東西可以比數據庫本身更快地(以更少的代碼)比較一組東西。數據庫鏈接的使用以及MINUS和INTERSECT運營商的明智使用是實現這一目標的非常有效的手段。

0

嘗試使用下面的SQL,這應該是最快的方法,因爲您將在數據庫中工作。通過其他數據庫中的數據庫鏈接訪問該表。

SELECT * 從 ( (從Table_In_Schema1 減去 選擇選擇*從Table_In_Schema2) UNION ALL (從Table_In_Schema2 減去 選擇選擇*從Table_In_Schema1) )

相關問題