Oracle
 sql >> Database >  >> RDS >> Oracle

Come utilizzare QUERY in expdp per estrarre solo i dati degli ultimi 3 mesi

Rimuovi il punto e virgola nella QUERY parametro.:

QUERY=TABLE1,TABLE2:"where TABLE1_STARTTIME >= TO_DATE('01-AUG-2015','dd-mon-yyyy') 
                     and TABLE2_STARTIME >= TO_DATE('01-AUG-2015','dd-mon-yyyy')" 

A margine:

Non direttamente correlato al tuo problema. Ma ricorda TO_DATE è dipendente da NLS . Devi specificare NLS_DATE_LANGUAGE , altrimenti la tua query potrebbe non riuscire per un diverso nls_date_language.

Ad esempio,

SQL> alter session set nls_date_language='FRENCH';

Session altered.

SQL> SELECT TO_DATE('01-AUG-2015','dd-mon-yyyy') FROM DUAL;
SELECT TO_DATE('01-AUG-2015','dd-mon-yyyy') FROM DUAL
               *
ERROR at line 1:
ORA-01843: not a valid month


SQL> SELECT TO_DATE('01-AUG-2015','dd-mon-yyyy', 'nls_date_language=ENGLISH') FROM DUAL;

TO_DATE('01
-----------
01-AO█T -15

Preferirei usare ANSI Date literal , quando non hai alcuna porzione di tempo . È indipendente da NLS . Utilizza un formato fisso AAAA-MM-GG .

Ad esempio,

SQL> alter session set nls_date_language='FRENCH';

Session altered.

SQL> SELECT DATE '2015-08-01' FROM DUAL;

DATE'2015-0
-----------
01-AO█T -15

SQL> alter session set nls_date_language='AMERICAN';

Session altered.

SQL> SELECT DATE '2015-08-01' FROM DUAL;

DATE'2015
---------
01-AUG-15