文档章节

Oracle如何把海量数据导出到一个txt文本中

明舞
 明舞
发布于 2014/09/03 20:58
字数 445
阅读 212
收藏 0

第一种:利用spool

缺点:性能较差

利用Oracle中的Spool缓冲池技术可以实现Oracle数据导出到文本文件。
1)
、在Oracle PL/SQL中输入缓冲开始命令,并指定输出的文件名:
spool d:output.txt
2)
、在命令行中随便输入你的SQL查询:
select mobile from customer;
select mobile from client;
……
3)
、在命令行中输入缓冲结果命令:
spool off;
则系统将缓冲池中的结果都输出到"output.txt"文件中。
TAB键分隔

 例子(syoyou_xamshain.sql文件)

set newpage 0
set linesize 10000             
set pagesize 0
set und off
set trimspool on
set colsep,
set echo off
set feedback off

spool syoyou_xamshain.csv
select 
SHIMEI_CD , VALID_TERM_START_YMD , SHAIN_NMJ_SEI ,SHAIN_NMJ_NA , SHAIN_NMHK_SEI , 
SHAIN_NMHK_NA , SHAIN_NMHE_SEI , SHAIN_NMHE_MIDDLE , SHAIN_NMHE_NA , SEI_BETSU_KBN , 
NOK00J0001.NOZJ1301(birth_day), 
SAIYOU_YMD , KEI_BETSU_CD , RETIRE_YMD , BANK_CD , BANK_NMJ , BANK_NMK , BANK_SHITEN_CD , 
BANK_SHITEN_NMJ , BANK_SHITEN_NMK , YOKIN_TYPE , KOUZA_MEIGI_KANA ,
NOK00J0001.NOZJ1301(kouza_no),  SSO_TAISHO_FLG , 
VALID_TERM_END_YMD , NEXT_SYSTEM_TAISHO_FLG , IDOU_FLG , YUUKOU_FLG , CREATE_USER_CD , 
CREATE_TIME_STAMP , UPDATE_USER_CD , UPDATE_TIME_STAMP
from xamshain ;

spool off

 

第二种:

要从Oracle导出部分数据到文本文件中(flatfile),由于数据表很大,使用toad时导出失败,居然说内存溢出。看来还是用Oracle自己的命令来完成吧。

首先需要准备导出的目录,假设为 /opt/tmp,该目录需要Oracle的帐户可以读写。
create or replace directory utlexportpath as '/opt/tmp';

然后在sqlplus中即可使用如下方式把文件导出:

declare
    outfile utl_file.file_type;
begin
    outfile := utl_file.fopen('UTLEXPORTPATH','exp.txt','W');
    for rec in (select col1,col2 from sometable where your conditions)
    loop
       utl_file.put_line(outfile, rec.col1||','||rec.col2);
    end loop;
    utl_file.fclose(f);
end;

即便是导出上G的数据,也会非常的快。
试试吧。 

 

 第三种:

   Oracle 的导出导入是一个很常用的迁移工具。 在Oracle 10g中,Oracle 推出了数据泵(expdp/impdp). 它可以通过使用并行,从而在效率上要比exp/imp 要高。


© 著作权归作者所有

明舞
粉丝 230
博文 424
码字总数 516555
作品 0
程序员
私信 提问
Lucene4.3开发之插曲之斗转星移

现在我们的索引里有2亿多的数据,那么现在的需求是,把索引里的全部数据,读取人后写入txt文本里,对于这么一个量级的数据,显然是不可能一下子全部读取完的,那得要多大的内存才能够支持下来...

heroShane
2014/02/21
154
0
lucene4.7 分页(五)

我们先来看下下面的问题,现在我们的索引里有2亿多的数据,那么现在的需求是,把索引里的全部数据,读取然后写入txt文本里,对于这么一个量级的数据,显然是不可能一下子全部读取完的,那得要...

一枚Sir
2014/04/10
3.2K
1
oracle sqluldr2工具使用方法

简介:oracle数据导出工具sqluldr2可以将数据以csv、txt等格式导出,适用于大批量数据的导出,导出速度非常快。导出后可以使用oracle loader工具将数据导入。 安装:下载:http://www.onexso...

wangkunj
2017/12/26
0
0
操作外部数据库 从.sql转换开始·

最近楼主换了一家公司,好不习惯的说。习惯了之前公司的后台给处理数据,习惯了拿到现成的东西去添枝加叶,习惯吃饭的时候张口美女给喂...哈哈,言归正传 这几天公司给安排接手了一个项目, ...

她的梦z
2018/07/20
0
0
21、移植数据(数据仓库)

21、移植数据(数据仓库) (1)数据泵 expdp impdp 数据泵导出和导入情景: 全库、用户、表、表空间、可移动表空间。 案例模板: mkdir -p /u02/dumpdir chown -R oracle.dba /u02/dumpdir des...

lxm111111
2017/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

医疗项目pc端后台页面用vue重构整个html页面

页面源码是vue

xintaiideas
35分钟前
2
0
领域驱动中的“贫血症和失忆症” --实践领域驱动--原文

贫血症严重危害着人类健康,并且伴随有危险的副作用。当贫血领域对象被首次提出来时,它并不是一个博得赞美的词汇,它描述的是一个缺少内在行为领域对象。奇怪的是,人们对于贫血领域对象的态...

还仙
38分钟前
5
0
条码打印软件中标签预览正常打印无反应怎么解决

在使用条码打印软件制作标签时,有客户反馈,标签打印预览正常的,但是打印无反应,咨询是怎么回事?今天针对这个情况,可以参考以下方法进行解决。 一、预览正常情况下,打印没反应 (1)在条码...

中琅软件
48分钟前
5
0
判断字符串的时候

判断字符串的时候一定把常量房前边, //报警程度 String leve = vo.getDeviceAlertDeal().getWarnLevel(); if(("0").equals(leve)) { row.add("无报警"); }else if(("1").equals(leve)) { ro......

简小姐
48分钟前
7
0
Linux maven3.6.2 install

PS:安装 maven 之前请先安装 jdk 1.安装 wget 命令(安装过就不用了) yum -y install wget 2.寻找需要的 maven 版本 https://maven.apache.org/download.cgi 3.进入 /var/local 文件夹 cd...

东方神祇
50分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部