sqlplus 執行大量sql指令碼時遇到問題分析(很常見)
sqlplus -s / as sysdba <
@test.sql
EOF
第二個EOF前面有沒有exit效果都一樣。 也就是說預設就是exit
test.sql裡最後加不加commit效果都一樣,exit預設的時候就是提交(這個可以控制)
test.sql 名字如果是帶空格t est.sql,怎麼辦?
(下面是好多sql檔案進行遍歷)
【1】
cat database.sh
ls *sql | while read line;do
sqlplus -s / as sydsba <
@"$line"
EOF
【2】
cat database.sh
for line in `ls *sql` ;do
sqlplus -s / as sydsba <
@"$line"
EOF
done
用while迴圈,而不用for in 是因為如果檔名有空格,ls *sql出來以後,line取值是按照空格或者換行符作為間隔符號,
所以一個檔名會被空格分成為2個值使用;而用while read 則是隻按照換行符作為間隔符號,所以一個檔名不會被分割。這就是這兩種方式的區別。
下面的sqlplus 下面執行@"line",變數line需要加雙引號,防止檔名被空格分割解析
sqlplus 的兩種方式對比對比:
【1】
#cat test.sql
insert into test values(sysdate);
commit;
#cat database.sh
ls *sql | while read line;do
sqlplus -s / as sydsba <
@"$line"
EOF
上面的exit退出動作是由EOF完成的
【2】
#cat test.sql
insert into test values(sysdate);
commit;
exit;
#cat database.sh
ls *sql | while read line;do
sqlplus -s / as sydsba @"$line"
上面的exit退出動作,只能在test.sql中完成。
在這種情況下如果不在test.sql中加exit,那麼迴圈會在第一次sqlplus 執行的時候阻塞,直到被手工處理以後,才能進入到下一次迴圈。
@test.sql
EOF
第二個EOF前面有沒有exit效果都一樣。 也就是說預設就是exit
test.sql裡最後加不加commit效果都一樣,exit預設的時候就是提交(這個可以控制)
test.sql 名字如果是帶空格t est.sql,怎麼辦?
(下面是好多sql檔案進行遍歷)
【1】
cat database.sh
ls *sql | while read line;do
sqlplus -s / as sydsba <
@"$line"
EOF
【2】
cat database.sh
for line in `ls *sql` ;do
sqlplus -s / as sydsba <
@"$line"
EOF
done
用while迴圈,而不用for in 是因為如果檔名有空格,ls *sql出來以後,line取值是按照空格或者換行符作為間隔符號,
所以一個檔名會被空格分成為2個值使用;而用while read 則是隻按照換行符作為間隔符號,所以一個檔名不會被分割。這就是這兩種方式的區別。
下面的sqlplus 下面執行@"line",變數line需要加雙引號,防止檔名被空格分割解析
sqlplus 的兩種方式對比對比:
【1】
#cat test.sql
insert into test values(sysdate);
commit;
#cat database.sh
ls *sql | while read line;do
sqlplus -s / as sydsba <
@"$line"
EOF
上面的exit退出動作是由EOF完成的
【2】
#cat test.sql
insert into test values(sysdate);
commit;
exit;
#cat database.sh
ls *sql | while read line;do
sqlplus -s / as sydsba @"$line"
上面的exit退出動作,只能在test.sql中完成。
在這種情況下如果不在test.sql中加exit,那麼迴圈會在第一次sqlplus 執行的時候阻塞,直到被手工處理以後,才能進入到下一次迴圈。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27042095/viewspace-1096885/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sqlplus執行指令碼時遇到錯誤自動停止SQL指令碼
- [20221126]tpt pr.sql指令碼執行問題.txtSQL指令碼
- 一個“指令碼執行夯死”問題的分析指令碼
- mybatis執行sql指令碼MyBatisSQL指令碼
- [20241110]使用xto10.sql指令碼遇到的問題.txtSQL指令碼
- 使用bat指令碼執行MySQL命令時遇到的坑BAT指令碼MySql
- 常見面試SQL問題面試SQL
- sonar常見問題分析
- Python操作SAP時候遇到的一些常見問題Python
- [20220414]toad呼叫執行指令碼問題.txt指令碼
- 執行 shell 指令碼 \r 問題解決指令碼
- sqlplus執行sql檔案報錯SQL
- 如何分析Sonar常見問題?
- SQL執行計劃異常引起的效能問題SQL
- SQL執行計劃異常 引起的效能問題SQL
- 【多執行緒】常見問題簡單總結執行緒
- JDBC用ResultSet訪問大量資料時會遇到的問題JDBC
- ssh執行遠端指令碼遇到的坑指令碼
- 前端自動指令碼中常見的幾個問題,你遇到了嗎?前端指令碼
- [20211221]分析sql語句遇到的問題.txtSQL
- 線上定時指令碼執行慢,分析過程指令碼
- CodeReview常見程式碼問題View
- CMD 執行大檔案SQL指令碼SQL指令碼
- 請教個問題執行 httprunner 遇到的問題HTTP
- 遇到的編碼問題、時區問題整理
- 執行docker run所遇到的問題Docker
- 訊息佇列常見問題分析佇列
- Slave SQL執行緒與PXB FTWRL死鎖問題分析SQL執行緒
- Linux定時執行.sh指令碼Linux指令碼
- Linux 定時執行指令碼、命令Linux指令碼
- SQL Server資料庫恢復常見問題SQLServer資料庫
- 寫python指令碼遇到的些許小問題Python指令碼
- Linux 作業系統指令碼格式問題導致指令碼無法執行Linux作業系統指令碼
- 學習WebFlux時常見的問題WebUX
- 常見問題
- 這些Kubernetes常見安全問題,你遇到過幾個?
- MongoDB常見問題解答:時間與時區MongoDB
- 生產系統 SQL 執行異常原因分析SQL
- LightDB Canopy 常見報錯問題分析(一)