亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

oracle對操作系統文件的讀寫操作

系統 2112 0

在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對操作系統文件的讀寫操作


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一级黄色录像毛片 | 精品久久影院 | 欧美一级特黄毛片免费 | 欧美午夜场 | 成人午夜影视全部免费看 | 97精品国产| 久久国产在线视频 | 色综合久久久久 | 2021久久伊人精品中文字幕有 | 欧美日韩亚洲视频 | 亚洲精品一二三区-久久 | 久久综合欧美 | 久青草视频免费观看青 | 亚洲日韩中文字幕在线播放 | 亚洲日本va| 国产美女一级高清免费观看 | 香蕉视频黄色片 | 高清视频 一区二区三区四区 | 久久亚洲精品玖玖玖玖 | 国产精品婷婷久久爽一下 | 在线亚洲一区二区 | 国产精品久久久久久网站 | 久久午夜青青草原影院 | 福利影院在线播放 | 成人精品视频网站 | 一区二区三区四区视频在线 | 黄色网址中文字幕 | 91色综合| 九色蝌蚪自拍 | 日本亚欧乱色视频在线网站 | 婷婷综合五月中文字幕欧美 | 乱人伦视频69 | 国产高清一区二区三区视频 | 一级女人18毛片免费 | 337p亚洲精品色噜噜狠狠 | 欧美日韩亚洲国产精品一区二区 | 欧美在线激情视频 | 红色毛片| 日本一级特黄大一片免 | 欧美激情久久久久久久大片 | 性欧美video另类bd |