CharlieShen

新人,大家多关照啦@_@

  博客中心 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 登录 ::
  3994 随笔 :: 0 文章 :: 20 评论 :: 0 Trackbacks
Cached @ 2025/4/28 16:05:44Control ASP.skins_cogitation_controls_blogstats_ascx
<2007年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

留言簿(14)

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

Cached @ 2025/4/28 16:05:44Control ASP.skins_cogitation_controls_singlecolumn_ascx

二问:利用QUERY选项输出数据

我知道在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字符串容易多了。

分享按钮发布于: 2007-09-23 10:38 CharlieShen 阅读(132) 评论(0)  编辑 收藏