【问题标题】:How to use QUERY in expdp to extract only the last 3 months data如何在 expdp 中使用 QUERY 仅提取最近 3 个月的数据
【发布时间】:2016-01-14 16:48:23
【问题描述】:

在我的另一个线程中,我询问了如何仅提取最近 3 个月的数据。但是,我设法仅从一个表中提取了过去 3 个月的数据,并为其他表提取了所有数据。我的架构中有几个表,时间戳的列名不同。

在我的 par 文件中,我有以下 QUERY,但它不起作用。我收到 ORA-00911 错误消息。我想知道以下查询的语法是否正确/可能。

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

【问题讨论】:

  • 我不知道 expdp 但错误 ORA-00911 暗示无效字符。我建议您在 db 中重新创建相同的查询,看看它是否有效。
  • 我猜您不希望在查询字符串的末尾使用分号。如果删除它,错误会消失吗?
  • 其实你的日期函数TO_DATE('01-AUG-2015','dd-mon-yyyy')在oracle里是不行的。我不知道那是不是你的问题。但是试试TO_DATE('01/08/2015','DD/MM/YYYY') 看看会发生什么。

标签: oracle expdp


【解决方案1】:

QUERY=TABLE1,TABLE2:"其中 ... TO_DATE('01-AUG-2015','dd-mon-yyyy');"

删除 QUERY 参数中的分号。:

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

附注:

与您的问题没有直接关系。但请记住,TO_DATENLS 相关的。您应该指定 NLS_DATE_LANGUAGE,否则您的查询可能会因不同的 nls_date_language 而失败。

例如,

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

当您没有任何时间部分时,我更喜欢使用 ANSI 日期文字。它是独立于 NLS 的。它使用固定格式 YYYY-MM-DD

例如,

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

【讨论】:

  • 大家好,感谢您的所有反馈。我会试一试,让你知道。谢谢!
  • 大家好,奇怪的是,当查询只在一个表上完成时它起作用了。例如。 QUERY=TABLE1:"where TABLE1_STARTTIME >= TO_DATE('01-AUG-2015','dd-mon-yyyy')" 还有其他想法吗?提前致谢!
  • 当查询包含 2 个表时,我得到以下信息: ORA-00904: "TABLE1_STARTTIME" : identifier non valide
  • 大家好,还有其他想法吗?提前致谢!
猜你喜欢
  • 2023-03-28
  • 2014-03-21
  • 1970-01-01
  • 2021-11-28
  • 2019-10-28
  • 1970-01-01
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多