oracle带列名导出表到文本,Oracle如何把海量数据导出到一个txt文本中

第一种:利用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 要高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值