oracle表数据导出文本数据(xls或txt) 今天试验了两种方法,记录如下 1.第一种方法:采用utl_file包 如下过程即可实现某表数据的导出 CREATE OR REPLACE PROCEDURE p_tabletoxls IS v_file utl_file.file_type; CURSOR cur_emp IS SELECT ename, deptno FROM emp; BEGIN IF utl_file.is_open(v_file) THEN utl_file.fclose(v_file); END IF; v_file := utl_file.fopen('UTL_FILE_DIR', 'emp.xls', 'w'); FOR i IN cur_emp LOOP utl_file.put_line(v_file, i.ename || chr(9) || i.deptno); --chr(9)即字段换列 END LOOP; utl_file.fclose(v_file); EXCEPTION WHEN OTHERS THEN dbms_output.put_line(SQLERRM); --写入数据 IF utl_file.is_open(v_file) THEN utl_file.fclose(v_file); END IF; END p_tabletoxls; 注:ULT_file包的使用要先创建一个目录存放数据 create or replace directory UTL_FILE_DIR as 'D:\dir'; grant read,write on directory UTL_FILE_DIR to ltwebgis; 2.第二种方法:采用ociuldr工具 先下载该工具,如下所示: D:\ociuldr\ociuldr>ociuldr user=username/username@orcl query="SELECT ename, deptno FROM emp" field=0x20 record=0x0a file=emp.xls 命令说明: user = username/password@tnsname sql = SQL file name, one sql per file, do not include ";" query = select statement field = seperator string between fields record= seperator string between records file = output file name(default: uldrdata.txt) field=0x20 表示字段间用空格表示,也可以写成field=' '。 field=0x09 表示字段间用分列表示,即在excel导出时直接就按列导出了。如果采用别的分隔符导出后在excel只有一列,可以采用excel进行分列。