Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So verwenden Sie QUERY in expdp, um nur die Daten der letzten 3 Monate zu extrahieren

Entfernen das Semikolon in der QUERY parameter.:

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')" 

Nebenbei bemerkt:

Steht nicht in direktem Zusammenhang mit deinem Problem. Aber denken Sie an TO_DATE ist NLS-abhängig . Sie sollten das NLS_DATE_LANGUAGE angeben , andernfalls schlägt Ihre Abfrage möglicherweise für eine andere nls_date_language fehl.

Zum Beispiel

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

Ich würde es vorziehen, ANSI-Datumsliteral zu verwenden , wenn Sie keinen Zeitanteil haben . Es ist NLS-unabhängig . Es verwendet ein festes Format JJJJ-MM-TT .

Zum Beispiel

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