方法一:使用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配置,稍微复杂点
分享到:
相关推荐
可以把oracle中大量数据导出为txt格式,便于在线下载、存储等后续处理。已经测试过,可以执行。
oracle使用spool导出文本(txt)的方法,可以自定义导出格式。
Oracle 大批量导出至txt文件 新建一个命令窗口,执行下面脚本。注意修改目标文件名、表名
oracle数据库数据导出为excel、dbf、csv等,以及ftp自动下载脚本
一款很好用的Oracle导出数据到txt文件的工具,适用于大数据量,速度非常快,远程连接数据库的话会受到网络等因素影响... 本人用的时候,命令无法复制到dos窗口,所以提供了两个bat文件执行的例子
linux oracle 定时 导出脚本;
编写一个bat脚本实现从Oracle数据库定时导出指定数据表的指定字段为txt文本并上传到FTP服务器的指定目录
oracle中数据的导入与导出 oracle中数据的导入与导出
Oracle数据导入导出impexp.txtOracle数据导入导出impexp.txtOracle数据导入导出impexp.txtOracle数据导入导出impexp.txtOracle数据导入导出impexp.txtOracle数据导入导出impexp.txtOracle数据导入导出impexp....
将(Oracle)数据库表导出到Excel,并生成文件(C#实现)
我们在操作数据库时,常常会出现导入导出的问题,有手动的也有dos命令的。现在我们讲的是另外一种,那就是导入xls,txt等数据到数据库,以及导出xls数据。希望对与大家有点帮助!
MySQL数据导入到Oracle的中间件,其工作原理是将MySQL数据的导出命令写入到d:/mysqltooracle/exportcmd.txt,打开该文件即可获取需要手动执行的导出MySQL数据的sql脚本,执行后会在 “/var/mysqltooracle”(针对...
能快速的从oracle中导入文本格式的数据。
NULL 博文链接:https://cqh520llr.iteye.com/blog/2084643
定时导出oracle指定用户下指定表的所有数据及格式生成CSV文件,通过存储过程; 1.使用特定用户或者system登陆到oracle执行"存储过程.txt"里面的脚本生成对应的存储过程; (说明:存储过程.txt脚本说明,查询指定用户下...
第一次接触linux系统,之前写的数据导出不好使了。原因是程序放在root用户下,要runtime执行exp的话,root不认exp命令;找了好多资料,最后决定写个shell脚本;没接触过shell脚本,网上大部分例子都写的挺复杂的;贴...
方便的实现oracle导出数据到txt、txt导入数据到oracle。 一、导出数据到txt 用all_objects表做测试 SQL> desc all_objects; Name Null? Type ----------------------------------------- -------- ------------...
NULL 博文链接:https://jxdwuao.iteye.com/blog/1704642
Sqluldr2 是一款 Oracle 数据快速导出工具,包含 32、64 位程序,sqluldr2 在大数据量导出方面速度超快,能导出亿级数据为excel文件,另外它的导入速度也是非常快速,功能是将数据以 TXT/CSV 等格式导出。
oracle数据库的导出,然后建用户说明,以及导出SQL脚本