在平时的数据导出中使用exp/expdp能够满足绝大部分的数据导出任务。如果有一些表的数据不多,但是查询条件要复杂一些,使用exp/expdp就很吃力了。

或者在和外部系统的交互中,使用xml或者文本文件是一个很兼容的选择,这个时候使用exp/expdp也满足不了要求。

这个时候可以考虑使用utl_file的提供的一些功能来做选择性的数据导出。

先来使用utl_file做一个简单的例子,输出两行文本内容到output.txt文件中。一行Hello,一行hello word

declare

v_filehandle UTL_FILE.FILE_TYPE;

begin

v_filehandle:=utl_file.fopen('/u01/ora11g/test/test','output.txt','w');

UTL_FILE.PUTF (v_filehandle,' REPORT: GENERATED ON%s\n', SYSDATE);

UTL_FILE.NEW_LINE (v_filehandle);

UTL_FILE.PUTF (v_filehandle, '%s\n','hello ');

UTL_FILE.PUTF (v_filehandle, 'hello: %s\n','world ');

UTL_FILE.FCLOSE (v_filehandle);

end;

/

运行pl/sql之后的输出如下:

[ora11g@rac1 test]$ cat output.txt

REPORT: GENERATED ON14-SEP-14

hello

hello: world

这个地方需要说明一下,我在  /u01/ora11g/test/test 输出了文件output.txt,事先没有创建任何的directory。因为utl_file_dir这个参数的默认值是*

SQL> show parameter utl

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

create_stored_outlines               string

utl_file_dir                         string      *

我们来做一个更有实际意义的。

从表data中输出100行数据到output.txt中。

declare

v_filehandle UTL_FILE.FILE_TYPE;

begin

v_filehandle:=utl_file.fopen('/u01/ora11g/test/test','output.txt','w');

UTL_FILE.PUTF (v_filehandle,'---export data from table data:', SYSTIMESTAMP);

UTL_FILE.NEW_LINE (v_filehandle);

for i in(select * from data where rownum<100) loop

UTL_FILE.PUTF (v_filehandle, '%s,%s\n',i.zhu,i.ke);

end loop;

UTL_FILE.FCLOSE (v_filehandle);

end;

/

输出内容如下,可以看到都是按照逗号分隔。显示的情况还不错。

[ora11g@rac1 test]$ cat output.txt

---export data from table data:

0,2

2,1

1,2

1,0

3,1

0,1

0,3

2,2

6,2

1,0

0,2

0,0

3,0

1,0

1,2

0,1

因为utl_file在新版本中一直都是推荐使用directory来替代的,我们也可以使用directory对象来实现。黄色的部分TEST就是directory的名字,指向'/u01/ora11g/test/test'

declare

v_filehandle UTL_FILE.FILE_TYPE;

begin

v_filehandle:=utl_file.fopen('TEST','output.txt','w');

UTL_FILE.PUTF (v_filehandle,'---export data from table data:', SYSTIMESTAMP);

UTL_FILE.NEW_LINE (v_filehandle);

for i in(select * from data where rownum<100) loop

UTL_FILE.PUTF (v_filehandle, '%s,%s\n',i.zhu,i.ke);

end loop;

UTL_FILE.FCLOSE (v_filehandle);

end;

/

输出的结果没有任何变化。

有的人可能说是用spool也可以实现,而且更灵活,在一定程度上是的,不过还是和utl_file有一定的区别。

比如我没有设置NLS_LANG的变量值,在sqlplus中查看中文可能就有问题。但是系统层面没有任何影响。

可以看到在sqlplus中显示是乱码的形式,但是在输出文件中显示的是正确的中文格式。

SQL> select *from test;

ID NAME

---------- -----------------------------

1 ??????

SQL> declare

2  v_filehandle UTL_FILE.FILE_TYPE;

3  begin

4  v_filehandle:=utl_file.fopen('/u01/ora11g/test/test','output.txt','w');

5  UTL_FILE.PUTF (v_filehandle,'---export data from table data:', SYSTIMESTAMP);

6  UTL_FILE.NEW_LINE (v_filehandle);

7  for i in(select * from test where rownum<100) loop

8  UTL_FILE.PUTF (v_filehandle, '%s,%s\n',i.id,i.name);

9  end loop;

10  UTL_FILE.FCLOSE (v_filehandle);

11  end;

12  /

PL/SQL procedure successfully completed.

SQL> host

[ora11g@rac1 test]$ cat output.txt

---export data from table data:

1,突破玩法界限

oracle 导出数据 utl,使用utl_file做选择性数据导出相关推荐

  1. pb 如何导出csv_用问卷网做问卷调查 如何导出数据报表?

    Q:在问卷网做完了调研,需要导出所有的数据做进一步的分析,要怎么实现呢?是免费的吗? A:可以实现!问卷网支持用户免费导出和查看全部数据,数据报表目前支持的形式如下. 具体如何找到这些数据呢?可按照如 ...

  2. java 前端导出exvel_使用纯前端做的Excel导出了解一下

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我改造的前端Excel导出,需要引入jQuery插件[复制粘贴即可使用],各位不懂可以试一下.纯属练习 使用JS标签方式将页面数据信息导出xlsx文件 ...

  3. 想做大数据的,可以看看这个学习路线,超全!

    薪资高.机会多.缺口大,让大数据在开发圈里成了香饽饽. 与此同时,在我做公众号的这两年,目睹了太多人「从入门到放弃」,甚至有些人连大数据的门都没进来.看看你是哪种? 在中小企业做了一段时间大数据,但是 ...

  4. 陶瓷龙头要做“大数据” 豪言五年破百亿

    在东鹏负债1.4亿时开始"二次创业",何新明全面接管东鹏,让这家曾经不起眼的乡镇企业一跃成为目前国内建陶行业一线的龙头企业.在国内建陶行业一直有着上市难.上市后更难的魔咒之下,一直 ...

  5. oss图片数据转图片二进制数据_图片数据不够快来试试这些数据增强

    导读 我们经常会遇到训练模型时数据不够的情况,而且很多时候无法再收集到更多的数据,只能通过做一些数据增强或者其它的方法来合成一些数据.常用的数据增强方式有裁剪.旋转.缩放.亮度对比度色度饱和度变换.仿 ...

  6. 如何从数据生命周期的角度做好数据资产管理?

    数据科学家和权威专家维克托·迈尔·舍恩伯格在其<大数据时代>中指出"虽然大数据还没有被列入企业的资产负债表,但这只是一个时间问题." 与此同时,随着数据爆发式的增长,越 ...

  7. oracle 导出数据 utl,【原创】利用utl_file包进行表数据导出

    利用utl_file包进行表数据导出 2013/11/12 一.概述 工作中需要将许多表的数据导出到一份excel中,虽然PL/SQL自带有导出的功能,但是导出后需要进行手动的汇总到一张excel中, ...

  8. oracle导入失败后怎样删除已导入数据,Oracle数据的导入、导出、插入、更新及删除总结...

    Oracle数据的导入.导出.插入.更新及删除总结 今天主要介绍一下使用Oracle的IDE:PL\SQL Developer进行数据的导入及导出操做方法. web 1. 数据导出 数据的导出比较简单 ...

  9. Hive数据类型、数据库相关操作、表的相关操做、数据的导入导出

    文章目录 Hive数据类型 1.基本数据类型 2.集合数据类型 案例实操 3.类型转化 数据库的相关操作 1.创建数据库 2.查询数据库 3.修改数据库 4.删除数据库 表的相关操作 1.建表 2.管 ...

最新文章

  1. pg 时间戳 能与整数比较大小吗_小学数学55组重要知识“顺口溜”+必考题型口诀,一遍就能记住!...
  2. No changes detected
  3. 做一个”合格“的程序员(二)——学习管理
  4. 7. Reverse Integer
  5. BZOJ4771 七彩树(dfs序+树上差分+主席树)
  6. php数据库创建文件失败怎么回事,安装zblogPHP提示“创建c_option.php失败”解决方法...
  7. Spring Annotation知识梳理
  8. oracle数据库中基础知识,oracle数据库基础知识
  9. Javascript的两种“单引号”
  10. 在React中加载数据:redux-thunk,redux-saga,suspense,hooks
  11. cv岗工作做什么_只会python能做什么工作
  12. html5之input标签学习
  13. 【IMX6UL开发板试用体验】上手试用与资源使用
  14. 拖动或点击CMD窗口造成程序阻塞,在bat文件中关闭cmd窗口的快速编辑模式
  15. word的多级符号设置
  16. Android设置WebView背景色
  17. 【回眸】Lunix内核 网络编程
  18. java web 题_javaWeb习题与答案
  19. 做PPT设计半年赚8万,我是怎样做到的?
  20. 一文掌握APQP(产品质量策划)

热门文章

  1. linux里临时设置hbase参数,在centos下配置hbase环境并简单使用hbase shell
  2. html添加工具栏,添加带有命令的工具栏 (HTML)
  3. mysql 主表存hash和子表的名字_【mysql】mysql分表和表分区详解
  4. C语言选择结构和循环结构的汇总
  5. 蒙特卡罗模拟法 —— python
  6. 山东大学 2020级数据库系统 实验二
  7. flog和flag_FLAG:写作,英语和持续学习
  8. iservice封装有哪些方法_总结WebService的一些封装技巧
  9. 实体类blob类型_Mysql的数据类型和JPA的实体类
  10. 升级锦囊 | 测试开发核心技术46讲