oracle 中想有条件的导出一张表的部分字段怎么实现。

现有的方式是写好sql语句,然后在plsql中查询出所需数据,然后在查询结果上右键导出,但这种方式不适合对数据量大的数据表进行操作,因为会超内存而且查询速度很慢。想做的就是跳过数据展示这个阶段直接进行导出所需数据(这个数据用到部分如substr或decode等函数对原有表进行了改变);
刚在写的时候想到一种方法,就是直接建个新表,create table as select ……,然后用exp直接导出这场表,之后再删掉该表。
但是还是觉得不很好,请教高人给与更直接的答案

可用sqlplus的方式
先在某文件夹下(我就直接以C盘根目录为例了)
创建main.sql文件
内容如下
set linesize 200
set term off verify off feedback off pagesize 0
set head off
set trimout on
set trimspool on
spool aaa.txt
@export.sql
spool off
exit

其中aaa.txt是你要保存的文件名,这里貌似不能导成excel,只可以保存成csv格式,然后你再自己转换吧,文本是没问题的,其中@export.sql 是另一个文件,内容如下

你要想把数据导成以逗号分隔
脚本这么写
我就简单以emp表为例了,也是用的to_char函数,只要语句写正确就OK
select empno||','||to_char(hiredate,'yyyy-mm-dd') from emp;

结尾必须用分号
把这个保存成export.sql文件

然后cmd进到你要执行的文件夹下

sqlplus 用户名/密码 @main

然后无限的等待,等到把你的文件导成

你将来要是要把文件导入到哪的话,可以用sqlloader
这个网上教程很多

哎,打字这个累呀追问

最后输入 sqlplus 用户名/密码 @main有问题吧,会出现ora-12154的错误,请教怎么解决。

追答

手误了
sqlplus用户名/密码@实例名 @c:/main.sql

注意实例名和@c中间有空格,刚才@main文件名没写全

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-15
写个程序把,把查询语句放在存储过程中,然后在程序中调用存储过程,直接导出到EXCEL。
第2个回答  2013-05-15
exp 有个参数query
相似回答