2012-01-26 122 views
0

我希望一次性從一個數據源Oracle數據庫加載到目標oracle數據庫。 它不能完成數據的直接加載/卸載或導入/導出,因爲它在源和目標處的不同表結構列。所以它需要很好的轉換,我的計劃是從源數據庫獲取XML格式的數據並將XML處理到目標數據庫。 以及數據量會更多(某些表中有1至2000多萬條記錄或更多),涉及的數據庫有:Oracle(源)和Oracle(目標),請提供一些最佳實踐或最佳實現方法。將數據從一個oracle數據庫加載到另一個oracle數據庫最佳做法/方法

回答

2

我不確定我明白你爲什麼不能直接加載。

如果您在目標數據庫上創建指向源數據庫的數據庫鏈接,則可以將ETL邏輯放入SQL語句中,該語句從源數據庫SELECTINSERT到目標數據庫中。這樣可以避免將數據寫入平面文件,讀取平面文件,解析XML等等,這將會很慢並且需要大量的編碼。這樣,您可以專注於ETL邏輯,並且可以儘可能高效地遷移數據。

您可以編寫直接從舊數據庫上的舊錶結構加載到新數據庫上的新表結構的SQL(或PL/SQL)。

INSERT INTO new_table(<<list of columns>>) 
    SELECT a.col1, a.col2, ... , b.colN, b.colN+1 
    FROM [email protected]_to_source a, 
     [email protected]_to_source b 
    WHERE <<some join condition>> 
+0

謝謝,爲什麼我不能直接加載我不希望創建源表和列,我在目的地有不同的表結構,它們與源表和列不同。 由於其一次數據加載,在這種情況下是否值得使用ETL?我知道SQL,PL/SQL。我是ETL的新手,請提出建議。 – balu

+0

@balu - 我仍然不確定是否明白問題所在。您可以在SQL和/或PL/SQL中實現ETL(僅代表Extract Transform Load)邏輯。我發佈了一個從源系統中的兩個表直接加載到目標系統中的單個表的示例。不需要在目標數據庫中創建源表。 –

相關問題