Oracle导出数据到txt

2025-04-19Oracle / RAC / 性能优化

方法一:使用SQLPlus的spool命令

![1756814898767-5d956d23-f271-4e6b-a373-c16159a78cf3.png](#)

  1. set echo off –在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句
  2. set feedback off –是否显示当前sql语句查询或修改的行数
  3. set newpage none –会在页和页之间没有任何间隔
  4. set verify off —
  5. set pagesize 0 –分多少页
  6. set term off –在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。
  7. set trims on –将SPOOL输出中每行后面多余的空格去掉
  8. set linesize 600 –设置屏幕显示行宽,默认100
  9. set heading off –禁止输出列标题
  10. set timing off –默认为OFF,设置查询耗时,可用来估计SQL语句的执行时间,测试性能
  11. set numwidth 38
  12. SPOOL D:aaa.txt
  13. select UserTelNo || ',' || to_char(ReceiveTime,'yyyy-MM-dd HH24:MI:SS') || ',' || UserContent || ',' || ReplyContent FROM LogSMSHall_Mutual WHERE rownum<=100;
  14. SPOOL OFF

优点:

缺点:

方法二:使用UTL_FILE包的文件操作命令

![1756814898767-5d956d23-f271-4e6b-a373-c16159a78cf3.png](#)

  1. DECLARE
  2. row_result varchar2(1024);
  3. selectsql varchar2(1024);
  4. qrycursor SYS_REFCURSOR;
  5. txt_handle UTL_FILE.file_type;
  6. BEGIN
  7. selectsql := ' select bizname ||'' ''|| bizstatus from bizbusinessbaseinfo ';
  8. txt_handle := UTL_FILE.FOPEN('D:/UTL','a.txt','w');
  9. open qrycursor for selectsql;
  10. loop
  11. fetch qrycursor into row_result;
  12. exit when qrycursor%notfound;
  13. UTL_FILE.PUT_LINE(txt_handle,row_result);
  14. end loop;
  15. –关闭游标
  16. close qrycursor;
  17. UTL_FILE.FCLOSE(txt_handle);
  18. end;

优点:

缺点: