使用 UTL_FILE导出TAB和逗号分割数据

简介: DECLARE   row_result varchar2(4000);   selectsql  varchar2(4000);   qrycursor  SYS_REFCURSOR;   txt_handle UTL_FILE.
DECLARE
  row_result varchar2(4000);
  selectsql  varchar2(4000);
  qrycursor  SYS_REFCURSOR;
  txt_handle UTL_FILE.file_type;
BEGIN
  selectsql  := 'select USER_ID||chr(9)||EXTERNAL_ID||chr(9)||ACCOUNT_ID||chr(9)||CERTIFY_STATUS||chr(9)||USER_STATUS||chr(9)||RUNTIME_STATUS||chr(9)||USER_NAME||chr(9)||REAL_NAME||chr(9)||COUNTRY||chr(9)||GENDER||chr(9)||PROFESSION||chr(9)||ADDRESS||chr(9)||PHONE||chr(9)||MOBILE||chr(9)||EMAIL||chr(9)||CERT_TYPE||chr(9)||CERT_NO||chr(9)||LICENSE_VALID_TIME||chr(9)||REGISTER_FROM||chr(9)||ORIGIN_REGISTER_FROM||chr(9)||RAW_ADD_TIME||chr(9)||RAW_UPDATE_TIME||chr(9)||BANK_CARD_NO||chr(9)||BANK_CARD_TYPE||chr(9)||NAME||chr(9)||BANK_CERT_NO from yhcheck.til_per';
  txt_handle := UTL_FILE.FOPEN('TESTDIR', 'b.txt', 'w',32767);
  open qrycursor for selectsql;
  loop
    fetch qrycursor
      into row_result;
    exit when qrycursor%notfound;
    UTL_FILE.PUT_LINE(txt_handle, row_result);
  end loop;
  --关闭游标    
  close qrycursor;
  UTL_FILE.FCLOSE(txt_handle);
end;

逗号分隔
DECLARE
  row_result varchar2(4000);
  selectsql  varchar2(4000);
  qrycursor  SYS_REFCURSOR;
  txt_handle UTL_FILE.file_type;
BEGIN
  selectsql  := 'select id || '','' || name || '','' || dti
  from testdump
 where name = ''gaopeng''
   and dti > to_date(''2015-03-17 00:00:00'', ''yyyy-mm-dd hh24:mi:ss'')';
  txt_handle := UTL_FILE.FOPEN('DATA_PUMP_DIR', 'b.txt', 'w', 32767);
  open qrycursor for selectsql;
  loop
    fetch qrycursor
      into row_result;
    exit when qrycursor%notfound;
    UTL_FILE.PUT_LINE(txt_handle, row_result);
  end loop;
  --关闭游标    
  close qrycursor;
  UTL_FILE.FCLOSE(txt_handle);
end;



注意点 1: 'w'可以更改为'a'为追加
         2:
32767为每行的宽度,默认为1024
         3:
TESTDIR为大写是 CREATE DIRECTORY建立的目录
         4: chr(9) 为TAB分割

目录
打赏
0
0
0
0
91
分享
相关文章
使用UTL_FILE转储数据为逗号分隔符文件
作者:eygle【版权声明:转载时请务必以超链接形式标明文章原始出处和作者信息及本声明】 链接:http://www.eygle.com/archives/2005/05/eoautl_fileeioe.html Tom写过这样一个函数用于把数据转储为逗号分隔符文件,看到很多人问类似的问题,转载这里供参考。
1195 0
[20170508]listagg拼接显示字段.txt
[20170508]listagg拼接显示字段.txt --//记得前一阵子,要给表增加一个字段,并赋值.采用表在线重定义.要使用函数dbms_redefinition.
898 0
使用utl_file做选择性数据导出
在平时的数据导出中使用exp/expdp能够满足绝大部分的数据导出任务。如果有一些表的数据不多,但是查询条件要复杂一些,使用exp/expdp就很吃力了。 或者在和外部系统的交互中,使用xml或者文本文件是一个很兼容的选择,这个时候使用exp/expdp也满足不了要求。
1006 0
Oracle Q-quote delimiter Quote(q) 字符串原样输出
      在sql查询中,我们经常需要原样输出字符串,如果字符串中含有大量的单引号、双引号或者特殊字符,那么需要用单引号转义拼接字符串,这样会非常的麻烦。
1593 0
ABAP中读取文本文件(TXT DOCUMENT)并用ALV显示
  在做ABAP开发时,有的时候我们需要将数据整理成文件然后上传至SAP,整理后的文件可以是文本格式或者EXCEL文件格式等,这也要看具体的业务要求了,本篇文件将以实例介绍如何读取文本文件。嘎嘎。。。  首先要介绍一下CL_GUI_FRONTEND_SERVICES类,这个类提供了很多对操作系统文件的操作,例如拷贝,列出文件名,打开文件等。
1602 0
导出csv文件时,处理分隔符问题(转)
转自:http://blog.sina.com.cn/s/blog_468530a60100kjpy.html   CSV文件默认以英文逗号做为列分隔符,换行符作为行分隔符。 如果不提供网页形式只用命令行或二进制程序输出数据到CSV,只需要将数据段按,分割,行按\n分割,写入到一个.csv文件即可。
4835 0
Shell中的文本处理工具、cut [选项参数] filename 说明:默认分隔符是制表符、awk [选项参数] ‘/pattern1/{action1}filename 、awk 的内置变量
Shell中的文本处理工具、cut [选项参数] filename 说明:默认分隔符是制表符、awk [选项参数] ‘/pattern1/{action1}filename 、awk 的内置变量
Shell中的文本处理工具、cut [选项参数] filename 说明:默认分隔符是制表符、awk [选项参数] ‘/pattern1/{action1}filename 、awk 的内置变量
[20121212]把每行的数据加起来最快的方法.txt
[20121212]把每行的数据加起来最快的方法.txt# grep "^08:44:11" aa108:44:11 pread(18, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\350\336\0\0\0\0\0\0\0\3 \nhW\344D".
518 0
[20170929]& 代替冒号绑定变量.txt
[20170929]& 代替冒号绑定变量.txt --//我昨天看链接,http://orasql.org/2017/09/27/ampersand-instead-of-colon-for-bind-variables/ --//重复测试: SCOTT@b...
779 0
[20120507]视图all_tab_columns的定义问题.txt
[20120507]视图all_tab_columns的定义问题.txt生产系统我发现一个问题,开发人员在使用pb9.0维护时要调用如下类似的语句:SELECT synonym_name  FROM SYS.
763 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等