Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como usar QUERY no expdp para extrair apenas os dados dos últimos 3 meses


Remover o ponto e vírgula na QUERY parâmetro.:
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')" 

Em uma nota lateral:

Não está diretamente relacionado ao seu problema. Mas lembre-se de TO_DATE é dependente de NLS . Você deve especificar o NLS_DATE_LANGUAGE , caso contrário, sua consulta poderá falhar para um nls_date_language diferente.

Por exemplo,
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

Prefiro usar literal de data ANSI , quando você não tem nenhuma porção de tempo . É independente de NLS . Ele usa um formato fixo AAAA-MM-DD .

Por exemplo,
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