方法一:使用SQLPlus的spool命令 (只能导出数据量较小数据)
操作步骤
1. 新建一个脚本文件,存放起来,如D:\spool.sql,具体代码如下
- set echo off --在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句
- set feedback off --是否显示当前sql语句查询或修改的行数
- set newpage none --会在页和页之间没有任何间隔
- set verify off --
- set pagesize 0 --分多少页
- set term off --在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。
- set trims on --将SPOOL输出中每行后面多余的空格去掉
- set linesize 600 --设置屏幕显示行宽,默认100
- set heading off --禁止输出列标题
- set timing off --默认为OFF,设置查询耗时,可用来估计SQL语句的执行时间,测试性能
- set numwidth 38
- SPOOL D:\aaa.txt
- select UserTelNo || ',' || to_char(ReceiveTime,'yyyy-MM-dd HH24:MI:SS') || ',' || UserContent || ',' || ReplyContent FROM LogSMSHall_Mutual WHERE rownum<=100;
- SPOOL OFF
注意如果有clob字段的话,最好用to_char函数进行转换。
2. 用sqlplus登录到oracle数据库
如果是在数据库本机,直接在命令行(WIN+R->CMD)窗口,输入“SQLPlus [用户名]/[密码]”即可。
如果远程登录,在命令行中输入“SQLPlus [用户名]/[密码]@[数据库IP地址:监听端口号]/[数据库实例名称]”,回车即可。如“sqlplus Ajita/1@192.168.85.136:1521/orcl”。
3. 执行脚本文件
在SQLPlus命令窗口中执行步骤1中的脚本文件。命令方式为“@[脚本文件位置]”,如“@D:\spool.sql”
优点:简单易用
缺点:不容易封装成存储过程
方法二:使用UTL_FILE包的文件操作命令
操作步骤(只需要一步,也可以封装成存储过程)
编写PL/SQL过程,导出到txt即可。
- DECLARE
- row_result varchar2(1024);
- selectsql varchar2(1024);
- qrycursor SYS_REFCURSOR;
- txt_handle UTL_FILE.file_type;
- BEGIN
- selectsql := ' select bizname ||'' ''|| bizstatus from bizbusinessbaseinfo ';
- txt_handle := UTL_FILE.FOPEN('D:/UTL','a.txt','w');
- 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;
注意事项:
如果没有设置参数utl_file_dir参数,本方法会报ora 29280的错误,解决方案有两种。
1. 设置utl_file_dir参数,两种方式:
a) 在init.ora中设置,直接修改文件即可
b) 在sqlplus命令行设置
alter system set utl_file_dir=* scope=spfile;
注意设置utl_file_dir的要点:
utl_file_dir=* 这表示你能操作任何目录,尽量不要用
utl_file_dir=d:\ 这表示你能操作d:\目录下的文件,但你不能操作d:\目录下的子目录
注意在设置 utl_file_dir=路径时,如果路径是长路径名,例如c:\my temp目录,则你必须加上'',例如: utl_file_dir='c:\my temp'
utl_file_dir可以是多个路径 utl_file_dir=c:\,d:\,d:\temp,'c:\my temp'
设置完必须重新启动数据库
2. 创建自己的目录(不需要重启数据库)
在命令行中执行命令create or replace directory MY_DIR as 'c:/abc';即可。然后调用的时候,把frw:=utl_file.fopen('c:\abc','emp.txt','w');改成frw:=utl_file.fopen('MY_DIR','emp.txt','w');注意MY_DIR要大写。
优点:容易封装成存储过程
缺点:要使用UTL_FILE配置,稍微复杂点
方法2的另一种方法:(导出大数据量)
create or replace directory utlexportpath as 'c:\'; --Oracle所在服务器的目录
declare
outfile utl_file.file_type;
begin
outfile := utl_file.fopen('UTLEXPORTPATH','exp.txt','W');
for rec in (
select id,
usertype,
usercode,
pagename,
typeno,
description,
operatetime,
result,
ipaddress from scott.mobileoperatelog_history where rownum<=1000000)
loop
utl_file.put_line(
outfile, rec.id||','||
rec.usertype||','||
rec.usercode||','||
rec.pagename||','||
rec.typeno||','||
rec.description||','||
rec.operatetime||','||
rec.result||','||
rec.ipaddress);
end loop;
utl_file.fclose(outfile);
end;
--耗时63秒
--下面是Linux服务器中的Oracle
create or replace directory utlexportpath as '/home/oracle';--Oracle所在服务器的目录
declare
outfile utl_file.file_type;
begin
outfile := utl_file.fopen('UTLEXPORTPATH','exp.txt','W');
for rec in (
select toneid,successprovincename,failprovincename,successrate,eventinfo from synccrbtdeployresultevt)
loop
utl_file.put_line(
outfile, rec.toneid||'|'||
rec.successprovincename||'|'||
rec.failprovincename||'|'||
rec.successrate||'|'||
rec.eventinfo);
end loop;
utl_file.fclose(outfile);
end;
--230万数据,耗时118秒
优点:这种方法就不需要什么配置,只要创建目录就可以使用,
缺点:要求用户具有写入UTLEXPORTPATH权限
相关推荐
可以把oracle中大量数据导出为txt格式,便于在线下载、存储等后续处理。已经测试过,可以执行。
vc++6.0环境实现,读取txt文件,按照给定格式解析文件,删除不正确数据,写入oracle数据库.
C# 通过oracle sqlldr 将TXT批量导入oracle 一个文件夹里有大量的TXT文件,以"~"区分各字段. 这个程序能批量将此文件夹里的所有的文件导入oralce 并按日期把已导入的TXT文件复制另一个文件夹
工作中有很多数据以txt方式存储,需要导入oracle数据库处理(方便进行计算、统计),因文件较多,不便于手工处理,所以编写此程序以便进行数据导入。已经测试过,可以将数据导入oracle。
ORACLE 表数据写成TXT文本,CVS等格式存储过程,过程内还带有批量删除功能,网上这类语句不多,现本人拿出来供大家学习学习。相互提高。
如何把ORACLE的查询结果输出成TXT文件.docx
Oracle中如何用一条SQL快速生成10万条测试数据.txtOracle中如何用一条SQL快速生成10万条测试数据.txt
MySQL数据导入到Oracle的中间件,其工作原理是将MySQL数据的导出命令写入到d:/mysqltooracle/exportcmd.txt,打开该文件即可获取需要手动执行的导出MySQL数据的sql脚本,执行后会在 “/var/mysqltooracle”(针对...
ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup ...
1. 首先,创建一个parfile文件,例如1.txt,并写入以下内容: tables=employee file=f:\exp.dmp query="where birthday>= to_date('1980-12-18','yyyy-mm-dd')" 2. 然后,使用EXP工具,指定parfile文件,执行命令:...
Oracle触发器调用Java程序 Oracle触发器是Oracle数据库中的一种机制,可以在数据库中执行特定的操作。在本文中,我们将介绍如何使用Oracle触发器...main方法用于文件的写入操作,而modify方法则用于文件的读写操作。
java连接oracle数据库,并将从数据库中读取到得内容存放到txt文件中
§1.7 数据库写入进程 34 §1.8 日志写进程 34 §1.9 数据库检查点 34 §1.10 归档处理 35 §1.11 程序全局区(PGA) 35 第2章 警告日志与跟踪日志 35 §2.1 警告与日志文件 36 §2.1.1 经常查看警告日志文件内容 36...
主要是整合了jdbc处理clob类型的增删改查方法,有需要的同学可以看下
要恢复这个表的数据, 首先要在AUL中运行SCAN EXTENT命令, 因为Segment Header被格式化了, 所以Extent Map也可能丢失, 而Scan Extent则将扫描整个数据文件并将Extent分配信息写入AULEXT.TXT文件: AUL> SCAN EXTENT ...
uuid 生成不重复ID3万个 检测到重复就重试生成,把生成的id好,写入txt文档中
一个简单的例子,使用kettle将文本文件导入到数据库
主要介绍了c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql),需要的朋友可以了解一下。
当需要把Standby DB作为测试环境写入测试数据除了传统的备份数据,然后拆除,测试后恢复重建的方法外(该方法在生产库大了之后费时费力),oracle还支持 把备库把备库切换成快照临时写入测试数据,附件是转换的流程...
" " "(5) 设置将系统输出数据写入文件c:\textoutput.txt,执行多 " " "个命令后观察文件内容。 " " " " " "3. 显示系统信息 " " "(1) 显示用户信息 " " "(2) 显示数据库版本信息 " " "(3) 显示数据库中所有表的名称...