Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment utiliser QUERY dans expdp pour extraire uniquement les données des 3 derniers mois

Supprimer le point-virgule dans QUERY paramètre. :

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

En passant :

Pas directement lié à votre problème. Mais rappelez-vous TO_DATE est dépendant de NLS . Vous devez spécifier le NLS_DATE_LANGUAGE , sinon votre requête pourrait échouer pour un nls_date_language différent.

Par exemple,

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

Je préférerais utiliser le littéral de date ANSI , lorsque vous n'avez pas de portion horaire . Il est indépendant de NLS . Il utilise un format fixe AAAA-MM-JJ .

Par exemple,

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