ITPub博客

首页 > 数据库 > 数据库开发技术 > 转:EXP 数据库数据 QUERY 选项使用问题

转:EXP 数据库数据 QUERY 选项使用问题

原创 数据库开发技术 作者:chenfengwww 时间:2010-05-19 14:58:20 0 删除 编辑

http://www.builder.com.cn/2007/0913/504236.shtml

问题:我知道在 Oracle8i 中,可以使用 QUERY 有选择地输出表数据。我想用 EXP 命令来实现,但没有成功。下面是我所写的命令,以及得到的错误信息:

exp ddd/ddd file=/dbf/u11/customer.dmp

tables=AASC.AST_CUSTOMER_KEEP

query='where CUA_TRANS_DTS <

add_months(sysdate, -6)'

table_export[2]: CUA_TRANS_DTS: not found. (没有找到)

答:操作系统不同,用来指定 QUERY= 参数的方法也不同。 WHERE 语句里面往往有很多特殊的字符,如 =.>.< 和空格等等。而 UNIX 和 Windows 操作系统中的外壳命令提示是不欢迎这些字符的,这些字符将被忽略。你应该根据不同的操作系统采用不用的方法。我一般使用带有 QUERY 选项的参数文件( PARFILE ),利用 PARFILE ,可以不考虑操作系统平台而使用完全相同的方法。

下面给出一个例子。我用 select * from all_objects 建立了一个表 T ,我希望输出所有 object_id 小于 5000 的行。在 Windows 中,必须这样做:

C:exp>exp userid=tkyte/tkyte tables=t

query="""where object_id < 5000"""

注意:在 windows 中,需要在 WHERE 语句的两端使用三个双引号。

在 UNIX 中,必须这样做:

$ exp userid=/ tables=t query="where

object_id < 5000"

exp userid=/ tables=t parfile=exp.par

如果使用包含 query="where object_id < 5000" 的 PARFILE 文件,我可以在两个系统中使用相同的一个命令:

exp userid=/ tables=t parfile=exp.par

在两种操作系统中,完全相同。这相对于在不同的平台中使用不同的 QUERY 字符串容易多了。

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22036495/viewspace-1033727/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-07-04

  • 博文量
    118
  • 访问量
    460764