使用UTL_FILE转储数据为逗号分隔符文件

作者:eygle版权声明:转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
链接:http://www.eygle.com/archives/2005/05/eoautl_fileeioe.html

Tom写过这样一个函数用于把数据转储为逗号分隔符文件,看到很多人问类似的问题,转载这里供参考。
注意,UTL_FILE使用的Directory,需要你预先创建,具体可以参考Using Create directory & UTL_FILE in Oracle

create or replace function  dump_csv( p_query     in varchar2,
p_separator in varchar2
default ',',
p_dir       in varchar2 ,
p_filename  in varchar2 )
return number
AUTHID CURRENT_USER
is
l_output        utl_file.file_type;
l_theCursor     integer default dbms_sql.open_cursor;
l_columnValue   varchar2(2000);
l_status        integer;
l_colCnt        number default 0;
l_separator     varchar2(10) default '';
l_cnt           number default 0;
begin
l_output := utl_file.fopen( p_dir, p_filename, 'w' );
dbms_sql.parse(  l_theCursor,  p_query, dbms_sql.native );
for i in 1 .. 255 loop
begin
dbms_sql.define_column( l_theCursor, i,
l_columnValue, 2000 );
l_colCnt := i;
exception
when others then
if ( sqlcode = -1007 ) then exit;
else
raise;
end if;
end;
end loop;
dbms_sql.define_column( l_theCursor, 1, l_columnValue,
2000 );
l_status := dbms_sql.execute(l_theCursor);
loop
exit when ( dbms_sql.fetch_rows(l_theCursor) <= 0 );
l_separator := '';
for i in 1 .. l_colCnt loop
dbms_sql.column_value( l_theCursor, i,
l_columnValue );
utl_file.put( l_output, l_separator ||
l_columnValue );
l_separator := p_separator;
end loop;
utl_file.new_line( l_output );
l_cnt := l_cnt+1;
end loop;
dbms_sql.close_cursor(l_theCursor);
utl_file.fclose( l_output );
return l_cnt;
end dump_csv;
/

以下是使用样例:

[oracle@jumper tmp]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on Fri May 13 15:04:41 2005
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production
SQL> select dump_csv('select * from scott.emp',',','/tmp','emp.csv') from dual;
DUMP_CSV('SELECT*FROMSCOTT.EMP',',','/TMP','EMP.CSV')
-----------------------------------------------------
14
SQL> ! more /tmp/emp.csv
7369,SMITH,CLERK,7902,17-DEC-80,800,,20
7499,ALLEN,SALESMAN,7698,20-FEB-81,1600,300,30
7521,WARD,SALESMAN,7698,22-FEB-81,1250,500,30
7566,JONES,MANAGER,7839,02-APR-81,2975,,20
7654,MARTIN,SALESMAN,7698,28-SEP-81,1250,1400,30
7698,BLAKE,MANAGER,7839,01-MAY-81,2850,,30
7782,CLARK,MANAGER,7839,09-JUN-81,2450,,10
7788,SCOTT,ANALYST,7566,19-APR-87,3000,,20
7839,KING,PRESIDENT,,17-NOV-81,5000,,10
7844,TURNER,SALESMAN,7698,08-SEP-81,1500,0,30
7876,ADAMS,CLERK,7788,23-MAY-87,1100,,20
7900,JAMES,CLERK,7698,03-DEC-81,950,,30
7902,FORD,ANALYST,7566,03-DEC-81,3000,,20
7934,MILLER,CLERK,7782,23-JAN-82,1300,,10
时间: 2024-09-23 16:40:02

使用UTL_FILE转储数据为逗号分隔符文件的相关文章

SQL Like中的逗号分隔符

SQL Like中的逗号分隔符   在与数据库交互的过程中,我们经常需要把一串ID组成的字符串当作参数传给存储过程获取数据.很多时候我们希望把这个字符串转成集合以方便用于in操作. 有两种方式可以方便地把这个以某种符号分隔的ID字符串转成临时表.   方式一:通过charindex和substring.  代码 create function func_splitstring(@str nvarchar(max),@split varchar(10))returns @t Table (c1 v

mysql-MYSQL 将表数据导出到外部文件

问题描述 MYSQL 将表数据导出到外部文件 我想要将将表中一个表中的数据导出到mysql server 外的文件,有点类似于postgresql里的 COPY 表名 TO 文件名 WITH DELIMITER 分隔符; 求教!!! 解决方案 mysqldump -uusername -ppassword dbname tablename> d:data.sql

关于使用java从http接口取数据保存到本地文件的中文乱码处理

关于使用java从http接口取数据保存到本地文件的中文乱码处理 要做到如下几点: 1. 取接口数据,要注意加入编码设置与接口文件本身的编码设置一致,才能取得正确的数据   注意如下的: ins =new InputStreamReader(connection.getInputStream(),"GBK"):   必须加入第二个编码格式参数:参数的值与接口返回的数据的编码格式一致         /**   * 从某个接口取返回数据内容   * @param url   * @ret

用VB将WORD文档(或其他的二进制数据)生成xml文件并互相转换

word|xml|二进制|生成xml|数据|转换 用vb将word文档(或其他的二进制数据)生成xml文件并互相转换1.    建立一个新的vb工程2.    引用 Microsoft XML,版本 2.0 或以上3.    在窗体form1上建立按钮 cmdCreateXML 和 cmdGetBinary 代码:Option ExplicitDim oDoc As DOMDocumentDim DOCINPATH As StringDim XMLOUTPATH As StringDim DOC

将后台数据从Berkeley的文件DB转到MySQL

最近决定把MT的后台数据从Berkeley的文件DB转到MySQL.原因之一是使用关系数据库可以获得更多的灵活性,比如运行一条sql来变更 所有entry的某一个属性:另外一个原因是为了提前熟悉一下这个数据库,牙牙网站使用虚拟主机,DreamHost提供的数据库是MySQL,而我从前 主要使用了SQL Server,Oracle和DB2,Postgresql也只了解了一点,而MySQL则几乎没有接触过. 下载了5.0.27安装文件,安装顺利,使用了第一个默认端口3306,UTF-8的数据库字符集

如何用asp把sql server数据转化为execl文件?

server|数据 1.ASP文件: <%@ LANGUAGE="VBSCRIPT" %><%option explicit%><%'EXAMPLE AS:把数据库中一个每天24小时在线人数放到一个EXCEL文件中去'AUTHOR :钢铁工人'EMAIL :hello_hhb@21cn.com'DATE :2001-3-25'TEST :在NT4,SP6,SQL SERVER 7.0,EXCEL2000中测试通过%><HTML><H

asp代码实现access数据导出到excel文件

  asp代码实现access数据导出到excel文件: 一,下面是导出XLS格式 <%  dim referer  referer = Request.ServerVariables("HTTP_REFERER")  Dim CName,action  action=request.Form("action")  CName="../../Excel/"  dim daytime  'daytime=year(now())&&qu

Hadoop 写数据或上传文件问题

问题描述 Hadoop 写数据或上传文件问题 Hadoop写数据的过程中 怎么得到所申请的blockid,求大神们帮助啊..... 解决方案 这个是底层实现的吧.......

iOS数据持久化之一——plist文件

iOS数据持久化之一--plist文件         iOS开发中,我们时常会将一些简单的数据进行持久化的存储,方便我们保存程序的一些配置和用户的一些数据,plist文件就是我们保存这些数据的最佳选择. 一.何为plist         plist是一种文件格式,其内容规则是xml文件,后缀为.plist,因此,我们更习惯于成它问plist文件,在iOS开发中,这种文件常用来保存一些简单的配置数据,例如项目中的info.plist. 通过plist文件编辑器,我们可以很方便的查看和编辑层次清