环境:Unix(SunOS 5.0),Oracle 8.0.6exp imd/imddev123@imd_dev file=test.dmp tables=tax
这条语句可以正确执行,但是这是导出整个表,现在我想只导出部分数据.使用exp imd/imddev123@imd_dev file=test.dmp tables=tax query=\"where id >2 \"
提示没有query这个关键字我使用exo help=y 得出的是
Keyword  Description (Default)        Keyword      Description (Default)
--------------------------------------------------------------------------
USERID   username/password            FULL         export entire file (N)
BUFFER   size of data buffer          OWNER        list of owner usernames
FILE     output file (EXPDAT.DMP)     TABLES       list of table names
COMPRESS import into one extent (Y)   RECORDLENGTH length of IO record
GRANTS   export grants (Y)            INCTYPE      incremental export type
INDEXES  export indexes (Y)           RECORD       track incr. export (Y)
ROWS     export data rows (Y)         PARFILE      parameter filename
CONSTRAINTS export constraints (Y)    CONSISTENT   cross-table consistency
LOG      log file of screen output    STATISTICS   analyze objects (ESTIMATE)
DIRECT   direct path (N) 
FEEDBACK display progress every x rows (0) 
POINT_IN_TIME_RECOVER   Tablespace Point-in-time Recovery (N)
RECOVERY_TABLESPACES    List of tablespace names to recover
VOLSIZE  number of bytes to write to each tape volume
这种情况下我该怎么导出一个表中满足特定条件的数据呢

解决方案 »

  1.   

    用工具啊,
    plsql developer或者plsql developer或者plsql developer之类的。
      

  2.   

    我是要写在Shell或C里面在Unix下自动执行的,所以不能用工具
      

  3.   

    >也是个特殊字符,也需要斜杠之,
    或者你写个par文件,就不用处理斜杠了。
      

  4.   

    我是要写在Shell或C里面在Unix下自动执行的,所以不能用工具
      

  5.   

    imd/imddev123@imd_dev file=test.dmp tables=tax query="where id >2 "
    本身没有问题。
    我觉得AFIC(A Foolish In China)说得对,应该是‘>’没有做转义的缘故。
    脚本本身的问题。
      

  6.   

    imd/imddev123@imd_dev file=test.dmp tables=tax query="where id >2 "即可
      

  7.   

    exp imd/imddev123@imd_dev tables=T_UH file=d:\orabak.dmp query='where id >2'
      

  8.   

    问题的关键在于ora8.0.6版本的exp没有提供query参数
    偶暂时还没有想到有什么好方法
      

  9.   

    这个问题,新版本的oracle为exp提供了条件参数,所以,换数据库?呵呵。
    其实,你可以新建一个表(也可以临时建立),每次将需要的部分数据选出到新建的表中,再导出,就可以啦........
    不会告诉我新建表、sql语句不会在shell中写吧,哈哈。
      

  10.   

    C:\>exp jdsnguy/jdsnguy file=c:\b.dmp tables=security_app_detail
     query=\"where app_code>'0101'\"Export: Release 8.1.5.0.0 - Production on 星期三 5月 9 10:36:15 2007(c) Copyright 1999 Oracle Corporation.  All rights reserved.
    连接到:Oracle8i Release 8.1.5.0.0 - Production
    With the Java option
    PL/SQL Release 8.1.5.0.0 - Production
    已导出ZHS16GBK字符集和ZHS16GBK NCHAR 字符集即将导出指定的表通过常规路径 ...
    . . 正在导出表            SECURITY_APP_DETAIL          4 行被导出
    在没有警告的情况下成功终止导出。