oracle 导出数据 utl,使用utl_file做选择性数据导出

在平时的数据导出中使用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,突破玩法界限

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572409.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle 10g express linux,在Ubuntu下安装Oracle Database 10g Express Edition

Oracle 10g有一款XE版&#xff0c;意为体验版&#xff0c;限制是不支持多CPU和数据库大小不能超过2G(还有其他的什么&#xff0c;不记得了&#xff0c;Oracle官方网站有写)。对于开发的时候调试一下&#xff0c;体验一下还是够用的。关键大小比较适中&#xff0c;安装包200多M。…

表单打印功能

表单打印的2种方式 一、支持不同的浏览器 1、表单打印功能调用window.print() 就可以打印了 2、如果只打印表单上的一部分样式&#xff0c;将不想打印的部分写在media print中&#xff0c;隐藏掉 <style>   media print{     .Noprint{       display:none; …

oracle硬盘亮黄灯,RH2288H V3服务器硬盘亮黄灯故障处理案例

原标题&#xff1a;RH2288H V3服务器硬盘亮黄灯故障处理案例本文广州诚本将分享RH2288H V3服务器硬盘亮黄灯故障处理案例&#xff0c;希望对大家的工作有所帮助。问题描述某客户新开局的项目&#xff0c;采购一批RH2288H V3的服务器&#xff0c;做RAID时发现其中一台服务器一块…

5.Lock接口及其实现ReentrantLock

jdk1.7.0_79 在java.util.concurrent.locks这个包中定义了和synchronized不一样的锁&#xff0c;重入锁——ReentrantLock&#xff0c;读写锁——ReadWriteLock等。在已经有了内置锁synchronized的情况下&#xff0c;为什么又出现了Lock显示锁呢&#xff1f;本文将以Lock作为Ja…

oracle近三个月内,在oracle中的前三个月SQL

我有以下的sql&#xff0c;它给了我最后一整个三个月的人处理的档案报告&#xff0c;但我想采用它&#xff0c;以便从前三个月获得这些&#xff0c;例如&#xff0c;当我运行现在我应该从2011年10月11日和12日以及2012年1月2日和3日的4月份获得档案。有人可以提出一个建议&…

什么是递归

概念&#xff1a; 递归指的是方法定义中调用方法本身的现象&#xff08;自己调自己&#xff09;把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算 递归注意事项&#xff1a; 递归一定要有出口。…

错误问题

1、系统出现如下错误&#xff1a;warning: LF will be replaced by CRLF 原因分析&#xff1a; CRLF -- Carriage-Return Line-Feed 回车换行 就是回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)。 这两个ACSII字符不会在屏幕有任何输出&#xff0c;但在Windows中广泛使用来标…

oracle监听为blocked,关于“Instance +ASM1, status BLOCKED, ”

确实是可以的~只是需要配置一下~不过这个如果不操作ASM instacne的话没什么用Applies to:Oracle Net Services - Version: 10.1.0.4.0 to 10.2.0.4.0Information in this document applies to any platform.SymptomsChecking the listener status, ASM instance is shown as BL…

彻底学会IO流

概述&#xff1a; IO流就是用来处理设备间数据传输问题的.常见的应用: 文件复制; 文件上传; 文件下载IO的数据传输&#xff0c;可以看做是一种数据的流动&#xff0c;按照流动的方向&#xff0c;已内存为参照物&#xff0c;进行读写操作IO可以保存到文件&#xff0c;其实就是内…

一些芯片资料

74hc14d u10 u11 u12 六反相触发器 74HC244 三态八缓冲器 u15 u13 uln2003afwg u16 74HC07 u17 L298N 步进电机驱动芯片 MOS管认知 转载于:https://www.cnblogs.com/legion/p/6908434.html

debian php安装pdo扩展,docker安装PHP扩展2020-05-25

示例&#xff1a;1、docker-php-ext-install pdo_mysql2、extensionphp_pdo_mysql.dll一、docker按照PHP扩展先删除原来的composer容器&#xff0c;重新执行以下命令&#xff1a;docker run -it --name composer -v E:\docker\nginx\www\YYXTServer:/app --privilegedtrue comp…

DP Intro - Tree DP Examples

因为上次比赛sb地把一道树形dp当费用流做了&#xff0c;受了点刺激&#xff0c;用一天时间稍微搞一下树形DP&#xff0c;今后再好好搞一下&#xff09; 基于背包原理的树形DP poj 1947 Rebuilding Roads 题意&#xff1a;给你一棵树,让你求最少剪掉多少条边可以剪出一棵点数为m…

强大的缓冲流

概述&#xff1a; 缓冲流的概述BufferedInputStream: 字节输入缓冲流BufferedOutputStream: 字节输出缓冲流四种方式复制字符缓冲流文本排序字符流读字符乱码问题InputStreamReader转换流读取字符数据OutputStreamWriter转换流写字符数据转换文件编码 1.缓冲流的概述&#xf…

linux驱动头文件查找目录,在Fedora 20中查找简单设备驱动程序的头文件

因此&#xff0c;我尝试按照简单的示例加载ORielly Linux设备驱动程序手册中的“ Hello World”设备驱动程序。问题是&#xff0c;由于某种原因&#xff0c;除非我在include语句中显式定义头文件的路径&#xff0c;否则它将无法正常工作。即我必须输入#include 而不只是#includ…

Feel Good

传送门 Time Limit: 3000MS Memory Limit: 65536KTotal Submissions: 14435 Accepted: 3996Case Time Limit: 1000MS Special JudgeDescription Bill is developing a new mathematical theory for human emotions. His recent investigations are dedicated to studying how g…

转换流/序列化/反序列化

转换流&#xff1a; 使用转换流可以在一定程度上避免乱码&#xff0c;还可以指定输入输出所使用的字符集 InputStreamReader&#xff1a;是从字节流到字符流的桥梁&#xff0c;父类是Reader OutputStreamWriter&#xff1a;是从字符流到字节流的桥梁&#xff0c;父类是Writer 转…

linux进程map,LInux环境运行mapReduce程序

将工程整体打成一个jar包并上传到linux机器上&#xff0c;准备好要处理的数据文件放到hdfs的指定目录中用命令启动jar包中的Jobsubmitter&#xff0c;让它去提交jar包给yarn来运行其中的mapreduce程序 &#xff1a;hadoop jar wc.jar cn.edu360.mr.wordcount.JobSubmitter ...…

python+unittest框架整理(一点点学习前辈们的封装思路,一点点成长。。。)

预期框架整理目标&#xff1a; 1.单个用例维护在单个.py文件中可单个执行&#xff0c;也可批量生成组件批量执行 2.对定位参数&#xff0c;定位方法&#xff0c;业务功能脚本&#xff0c;用例脚本&#xff0c;用例批量执行脚本&#xff0c;常用常量进行分层独立&#xff0c;各自…

linux 不知道root密码怎么办,linux下忘记root密码怎么办

在linux系统操作中&#xff0c;为了系统的安全&#xff0c;会给系统中的root账户设置密码&#xff0c;那么忘记密码是时常发生的事情。如果忘记了root的密码该怎么办呢?下面秋天网 Qiutian.ZqNF.Com小编就给大家介绍下linux下忘记root密码的解决方法。linux是一套免费使用和自…

scrapy爬个小网站

本文使用scrapy对某一个网站静态数据进行了抓取# -*- coding: utf-8 -*- import scrapy from scrapy.http import request import requests import os import sys reload(sys) sys.setdefaultencoding(utf-8)#中文字符不能被识别报错 class spider(scrapy.Spider):namepicSpi…