以文本形式下载表数据
oracle 缺乏将表中数据输出至文本文件的工具,因此只能利用sqlplus 和unix 工具做变通的处理sqlplus –s dbuser/oracle <<EOF >/dev/null
set colsep |;
set echo off;
set feedback off;
set heading off;
set pagesize 0;
set linesize 1000;
set numwidth 12;
set termout off;
set trimout on;
set trimspool on;
spool tmp.txt;
select * from emp;
spool off;
exit
EOF
tr –d ‘ ‘ < tmp.txt >emp.txt 删除空格,可选注意:一定要用spool,如果在命令行中直接用>tmp.txt 可能会造成数据缺失,至少在Unixware7 上如此。
假定某域是char(n),如中间出现回车\n,则下载出的这条记录的格式将会错乱,不宜采用此方法

解决方案 »

  1.   

    直接在数据库中操作的例子:▲向文件中导出大量数据
    SQL> spool obj; /*导出到当前目录下obj.lst文件中*/
    SQL> set heading off; --禁止输出列标题
    SQL> set feedback off; --禁止显示最后一行的计数反馈信息
    SQL> set pagesize 50000; --设置显示多少行打印一次列名
    SQL> select * from tb_src;        1 13132520000             
            2 13132520001                    
            3 13132520002                                  
            4 13132520003                       
            5 13132520004                                  
            6 13132520005                           
            7 13132520006                               
            8 13132520007                           
            9 13132520008                          
           10 13132520009                        
    SQL> spool off;▲然后使用EXECL打开obj.lst文件,选择“空格”为分隔符即可。
      

  2.   

    不好意思,问个低级问题,Execl中在哪儿设置"空格"为分隔符阿?