Oracle-11g-R2
如何根據一列值導出它們之間連結的多個表的某些行?
我不確定我的問題是否清楚,所以讓我重新表述一下。我有三個這樣組織的表:
我想轉儲這些表,但我對所有行都不感興趣,我只想要上個月最後更新的那些。數據泵導出有沒有辦法做到這一點?我想到了 QUERY 參數,但我不能使用它,因為 SON 和 DAUGHTER 表中沒有 last_updated_date 。
例如,如果在我的
MOTHER
表中,我有 3 行:
id_mother
= 1 ;last_updated_date
= 01/01/17 ;id_mother
= 2 ;last_updated_date
= 01/02/17 ;id_mother
= 3 ;last_updated_date
= 01/03/17.而且,在我的
SON
表中,我有 2 行:
id_son
= 1 ;id_mother
= 2 ;id_son
= 2 ;id_mother
= 3.如果我想導出 3 月份的行,該過程將返回
MOTHER
表的一行 (id_mother
= 3) 和表的一行SON
(id_son
= 2)。我該如何處理?
如果您使用相關子查詢,則可以。檢查手冊。
QUERY=son:"where exists ( select * from mother where mother.id_mother = ku$.id_mother and mother.last_updated > trunc(sysdate,'month')"
ku$
代表您實際導出的表,所以這裡是 tableson
。從 Oracle 12c 開始,您有VIEWS_AS_TABLES 參數。然後您可以導出視圖的數據並將其儲存在表中,例如使用 sqlplus do
create view new_son as select son.* from son, mother where mother.id_mother = son-id_mother and mother.last_updated > trunc(sysdate,'month')"
現在使用
VIEWS_AS_TABLES='new_son'
如果您導入它,它將創建一個表
new_son
。