在SQL*Plus中可以对操作系统中的文本文件进行简单的读写访问。

例如,事先将SQL语句或者PL/SQL块的代码存放在文本文件中,再把文本文件调入缓冲区中,使之执行。

或者把当前缓冲区中的内容保存到一个文件中, 或者把SQL语句、PL/SQL块的执行结果保存到文件中。

1.读文件涉及的命令包括@、get、start等命令。

1.1 @命令的作用是将指定的文本文件的内容读到缓冲区中,并执行它。文本文件可以是本地文件,也可以是远程服务器上的文件。

如果是本地文件,@命令的命令的执行格式为:@文件名

这里的文件名要指定完整的路径,默认的扩展名是.sql,如果脚本文件使用了默认的扩展名,则在@命令中可以省略扩展名。

如果是远程文件,必须将它存放到一个web服务器上,并以HTTP或FTP方式访问。这时@命令的命令的执行格式为(以HTTP为例):@http://web服务器/文件名

使用@命令读取文件时,文件中可以包含多条SQL语句,每条语句以分号结束;或者可以包含一个PL/SQL块。

文件被读入缓冲区中以后,SQL*Plus将按顺序执行文件中的代码,并将执行结果输出到显示器上。

例如,假设在/home/Oracle目录下有一个文件,名为a.sql,文件的内容为:

SELECT ename FROM emp WHERE empno=7902;  SELECT dname FROM dept WHERE deptno=10;

现在希望通过@命令将这个文件读到缓冲区中,命令执行的执行格式如下:SQL> @/home/oracle /a

@命令还有一个用法,就是在启动SQL*Plus的同时,将指定的文件读入缓冲区并执行它。

这时@命令和文件名一起作为SQL*Plus的命令行参数,格式如下:sqlplus 用户名/口令 @文件名

注意,这种格式与以前提到的使用网络服务的格式是很相似的,

sqlplus 用户名/口令 @文件名

sqlplus 用户名/口令@网络服务名

但是仍然有区别,请注意观察:

sqlplus 用户名/口令@网络服务名 由于文件名和网络服务名都表现为字符串,所以单纯从名字上无法区分到底使用了文件名还是网络服务名。

二者的区别在于第一种格式中在用户名/口令之后有一个空格,这时将把后面的参数解释为一个文件,并把这个文件加载到缓冲区中。

在第二种格式中,用户名/口令之后没有空格,这时将后面的参数解释为网络服务名。

1.2 get命令的作用与@命令相似,但是它只是把文件加载到缓冲区中,并不直接执行。

get命令的的执行格式为:get 文件名 选项

其中文件名的默认扩展名为.sql,在get命令中可以省略。目前get命令只支持本地的操作系统文件。

可以使用的选项有两个:LIST和NOLIST。

其中LIST选项指定将文件的内容读到缓冲区的同时,还要在显示器上输出,这是默认选项。

选项NOLIST使得文件的内容不在显示器上输出。

使用get命令时还要注意,在文本文件中只能包含一条SQL语句,而且不能以分号结束。也可以只包含一个PL/SQL块,块以分号结束。

在使用@和get命令时要注意这些格式上的差别。例如,假设在/home/oracle目录下有一个文件,名为b.sql,文件的内容为:

SELECT ename FROM emp WHERE empno=7902 现在先通过get命令把它读入缓冲区,然后执行/命令使之执行:

SQL> get /home/oracle/b  1* SELECT ename FROM emp WHERE empno=7902 SQL> /  ENAME  ----------  FORD

1.3 start命令与@命令是等价的,这里不再赘述。

2.写文件涉及的命令包括save和spool。

其中save命令用于将当前缓冲区中的内容写入一个操作系统文件,而spool命令用于将命令的执行结果输出到一个操作系统文件。

2.1 save命令的格式为:SQL>save 文件名 选项

其中选项指定以什么样的方式写文件。可以使用的选项有以下三个:

CREATE 如果文件不存在,则创建。否则,命令执行失败。

APPEND 如果文件不存在,则创建。否则,在文件末尾追加。

REPLACE 如果文件不存在,则创建。否则删除原文件,重新创建。

如果不指定完整的路径,则在当前目录下产生这个文件,文件的默认扩展名是.sql。

例如,假设当前缓冲区中有一条SELECT语句,使用save命令可以将这条语句写入文件:

SQL> list    1* SELECT * FROM emp

SQL> save /home/oracle/aa

2.2 spool命令利用假脱机技术,用于将SQL*Plus的输出写入到文件中,它有以下几种用法:

spool 得到当前spool的状态,默认为不可用。

spool 文件名 启动spool,并打开指定的文件。

spool off 关闭spool,并将SQL*Plus的输出写入文件中。

spool out 关闭spool,将SQL*Plus的输出写入文件中,并同时送往打印机。

如果在SQL*Plus中以命令行的方式执行spool命令,那么从执行spool命令并打开文件开始,此后的所有输出,包括错误信息,以及用户的键盘输入,都将写入指定的文件,直到遇到“spool off”或者“spool out”。

但是这些信息的写入是一次性完成,即在执行“spool off”或者“spool out”的一瞬间,这些信息才一次全部写入文件,包括最后执行的“spool off”或者“spool out”命令本身。

文件的默认扩展名为.LST,默认的路径是当前目录。

spool命令通常的用法是生成报表。

首先将精心设计的SQL语句存放在一个文件中,在产生输出的语句前后加上spool命令,然后将这个文件读到缓冲区中执行。

这样在写入的文件中只有命令执行的结果,而不包括SQL语句本身。

例如,假设当前目录下有一个文件,名为c.sql,它的内容为:

spool cc  SELECT ename,sal FROM emp WHERE deptno=10;  spool off 现在将这个文件读到缓冲区中,并使之执行,执行结果如下:

SQL> @c

ENAME SAL  CLARK 2450  KING 5000  MILLER 1300

文件中SQL语句的执行结果显示在屏幕上,同时在当前目录下生成了文件cc.LST,文件的内容与屏幕上显示的结果完全一致。

exp:

SQL> get c:/temp/6-data ;  将文件读到缓冲区

SQL> save c:/temp/1.sql;    将缓冲区内容保存到文件

SQL> @install.sql;          执行文件

sqlplusw ies/ies2010@orcl  @install.sql (run.bat) 启动SQL*Plus,并执行文件

spool insert_sql.log;    将执行结果输出到文件

...

spool off;

正则表达式

^.*rows selected$

^.*rows inserted$

oracle数据库写文件,Oracle对操作系统文件的读写操作相关推荐

  1. oracle 存储过程写文件,Oracle写本地文件

    Oracle写本地文件是指写到运行Oracle的主机上,而不是运行该脚本的机器上. 说起来有点拗口,实际上就是无论在哪里执行这个过程,生成的文件始终都是在服务器上的. 下面过程实现了这个功能: log ...

  2. oracle数据库pfile文件,Oracle pfile/spfile参数文件详解

    Oracle pfile/spfile参数文件详解 在创建数据库时,SPFile文件中部分必须考虑的参数值: 基本规则 a.在SPFile文件中,所有参数都是可选的,也就是说只需要在初始化参数文件中列 ...

  3. oracle数据文件离线,oracle数据库的文件在哪里

    Oracle体系结构 Oracle 服务器由Oracle实例与Oracle数据库组成 Oracle实例(instance),通过ORACLE_SID来引导(Oracle标识) 单实例情况下:Oracl ...

  4. plsql备份还原oracle数据库,(已实践)PLSQL本地还原Oracle数据库dmp文件

    这个方法很烂,导致重装Oracle时候处处出现问题,不建议使用这个方法,除非你以后不再用Oracle这个软件了,这个方法很烂,再评论一下. 第一,启动服务,(如果数据库处于启动状态,那么略过这一步) ...

  5. oracle 密码文件在哪里看,Oracle数据库密码文件的使用

    Oracle数据库密码文件的使用 日期:2010年5月21日 作者: 在Oracle数据库系统中,用户假设要以特权用户身份(INTERNAL/SYSDBA/SYSOPER)登录Oracle 数据库能够 ...

  6. oracle如何检索文件,从Oracle数据库检索文件的示例

    PreparedStatement的getClob()方法用于从数据库中获取文件信息. getClob方法的语法 public Clob getClob(int columnIndex){} 让我们看 ...

  7. mysql long varchar2_案例:Oracle数据库long查询结果转换为varchar2类型方法的操作步骤...

    天萃荷净 将Oracle数据库查询出来的long结果转换为varchar2类型数据 来自Thomas Kyte <Oracle9i/10g/11g编程艺术> 12章节中.由于long的操作 ...

  8. oracle的dmp导出,oracle数据库dmp文件的导出和导入方法

    oracle数据库dmp文件的导出和导入方法 导出:以oracle用户登陆,执行下面的命令 exp paybill/paybill file=210.dmp 其中上面的paybill分别是你要到处数据 ...

  9. oracle备份数据库dmp定时,SCO Unix系统下定时备份Oracle数据库dmp文件的设置

    Oracle数据库中定时对dmp文件进行备份可以提高数据库的安全性与稳定性,以便于在出现故障时进行恢复.本文我们主要介绍了SCO Unix系统下定时备份oracle数据库dmp文件的知识,接下来就让我 ...

  10. oracle免费的环境,【Oracle数据库免费版】Oracle数据库官方下载 v11gR2 免费版-趣致软件园...

    Oracle数据库免费版是一款比较实用的数据库软件,内含强大的功能,支持对数据的完整管理,而且还能实现保存的持久性.Oracle数据库官方版采用了分布式的处理,支持各种数据库的运行,同时软件还能为大大 ...

最新文章

  1. 动手完善个性化弹出提示框的过程及乐趣
  2. ant vue 树形菜单横向显示_Vue--组件Ant- 树形结构菜单
  3. window下使用rtl-sdr和sdrsharp
  4. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
  5. rest接口自动化测试_REST服务的自动化测试
  6. c语言三个数从小到大排序/输出_我的c语言笔记(三)
  7. [Silverlight入门系列]动态创建控件和绑定
  8. 路径空间HDOJ 4514 - 湫湫系列故事——设计风景线 并查集+树型DP
  9. C++数据类型之结构体的练习(用到结构体的赋值,利用结构体元素排序以及查找)
  10. 并发编程常见面试题总结五
  11. CloudCompare:汉化
  12. 2016民用安防2.0时代重新起航
  13. Java基础-22总结登录注册IO版,数据操作流,内存操作流,打印流,标准输入输出流,转换流,随机访问流,合并流,序列化流,Properties...
  14. 按键精灵——欲望驱使之下的碧蓝航线12-4练级脚本
  15. 关于TI MMWAVE Demo 的一些经验
  16. (二)nginx正向代理https
  17. 百度UEdit富文本编辑器的使用
  18. android 4.4 锁屏密码,安卓如何绕过锁屏密码:方法都在这儿了
  19. web系统快速开发_开发一个快速销售系统
  20. 从源码分析 MySQL Group Replication 的流控机制

热门文章

  1. 数据分析 超市条码_数据分析入门:商品分析是什么?该怎么做?
  2. Jdom的安装和使用
  3. matlab对信号加噪代码,Matlab给信号加噪声
  4. 讯图科技数据网关解决方案
  5. 对称加密算法和非对称加密算法的区别
  6. 使用 vlmcsd 部署 KMS 服务器
  7. go语言编写同时支持Linux和Windows的单文件Web界面文件浏览器filebrowser介绍
  8. 科技赋能时代 用ocr身份证识别
  9. 在XP上安装VS2003及注意事项
  10. Keil4与keil5共存问题