oracle对系统文件的读写

oracle对系统文件的读写操作是怎样的呢?这是很多人都问过的问题,下面就为您详细介绍oracle对系统文件的读写操作,希望对您能够有所帮助。

在SQL*Plus中可以对操作系统中的文本文件进行简单的读写访问。
例如,事先将SQL语句或者PL/SQL块的代码存放在文本文件中,再把文本文件调入缓冲区中,使之执行。
或者把当前缓冲区中的内容保存到一个文件中,
或者把SQL语句、PL/SQL块的执行结果保存到文件中。

oracle对系统文件的读写:

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

@命令的作用是将指定的文本文件的内容读到缓冲区中,并执行它。文本文件可以是本地文件,也可以是远程服务器上的文件。
如果是本地文件,@命令的命令的执行格式为:@文件名
这里的文件名要指定完整的路径,默认的扩展名是.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 用户名/口令@网络服务名 由于文件名和网络服务名都表现为字符串,所以单纯从名字上无法区分到底使用了文件名还是网络服务名。
二者的区别在于第一种格式中在用户名/口令之后有一个空格,这时将把后面的参数解释为一个文件,并把这个文件加载到缓冲区中。
在第二种格式中,用户名/口令之后没有空格,这时将后面的参数解释为网络服务名。

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

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

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

save命令的格式为:SQL>save 文件名 选项
其中选项指定以什么样的方式写文件。可以使用的选项有以下三个:
CREATE 如果文件不存在,则创建。否则,命令执行失败。
APPEND 如果文件不存在,则创建。否则,在文件末尾追加。
REPLACE 如果文件不存在,则创建。否则删除原文件,重新创建。
如果不指定完整的路径,则在当前目录下产生这个文件,文件的默认扩展名是.sql。
例如,假设当前缓冲区中有一条SELECT语句,使用save命令可以将这条语句写入文件:
SQL> list    1* SELECT * FROM emp 
SQL> save /home/oracle/aa

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,文件的内容与屏幕上显示的结果完全一致。

 

 

 

【编辑推荐】

Oracle XE自带数据库创建的过程

Oracle物化视图创建全过程

oracle时间加减的语句写法

Oracle死锁的处理

教您如何检查oracle死锁

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/264774.html<

(0)
管理的头像管理
上一篇2025-05-05 04:42
下一篇 2025-05-05 04:43

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注