要在sql下面執(zhí)行shell語句,用!符號(hào),不過功能有限;有的時(shí)候打不到我們想要的效果!先給你兩個(gè)實(shí)例;
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作、平果網(wǎng)絡(luò)推廣、小程序定制開發(fā)、平果網(wǎng)絡(luò)營銷、平果企業(yè)策劃、平果品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供平果建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
要在后臺(tái)登陸;plsql中測(cè)試不行
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Data Mining and Real Application Testing options
SQL !echo 123;
123
SQL !/billing/user/xufc/
Local directory now /billing/Balance/SP/REALINCOME/FTRANS
Interactive mode off.
-rw-r--r-- 1 500 500 823038 Feb 17 06:27 340000PTSVDA002012021714210800000000.gz
-rw-r--r-- 1 500 500 33 Feb 17 06:27 340000PTSVDA002012021714210800000000.md5
其中需要用絕對(duì)路徑;該腳本里面的內(nèi)容只是ls一下;就這樣了
具體方法如下:
1、首先找到oracle并點(diǎn)擊鼠標(biāo)右鍵,以管理員身份運(yùn)行。
2、選擇創(chuàng)建新數(shù)據(jù)庫。
3、為新數(shù)據(jù)庫起個(gè)名字,其他沒提示一直點(diǎn)擊下一步。
4、添加口令。
5、選擇生成數(shù)據(jù)庫腳本。
6、生成成功。
為方便完成指定數(shù)據(jù)表的同步操作,可以采用dblink與merge結(jié)合的方法完成。
操作環(huán)境: 此數(shù)據(jù)庫服務(wù)器ip為192.168.196.76,有center與branch兩個(gè)庫,一般需要將center的表數(shù)據(jù)同步到branch,center為源庫,branch為目標(biāo)庫,具體步驟如下:
1.在源庫創(chuàng)建到目標(biāo)庫的dblink
create database link branch???? --輸入所要?jiǎng)?chuàng)建dblink的名稱,自定義?? connect to dbuser identified by “password”? --設(shè)置連接遠(yuǎn)程數(shù)據(jù)庫的用戶名和密碼?? using '192.168.196.76/branch';? --指定目標(biāo)數(shù)據(jù)庫的連接方式,可用tns名稱
在創(chuàng)建dblink時(shí),要注意,有時(shí)候可能會(huì)報(bào)用戶名和密碼錯(cuò)誤,但實(shí)際上我們所輸入的賬戶信息是正確的,此時(shí)就注意將密碼的大小寫按服務(wù)器上所設(shè)置的輸入,并在賬號(hào)密碼前號(hào)加上雙引號(hào)(服務(wù)器版本不同造成的)。
2.成功后驗(yàn)證dblink
select * from tb_bd_action@branch; --查詢創(chuàng)建好的brach庫
正常情況下,如果創(chuàng)建dblink成功,可采用該方式訪問到遠(yuǎn)程數(shù)據(jù)庫的表.
3.通過merge語句完成表數(shù)據(jù)同步
此例中需要將center庫中的tb_sys_sqlscripe表同步到branch,簡單的語法如下:
merge into tb_sys_sqlscripe@branch b using tb_sys_sqlscripe c on (b.pk=c.pk)? --從center將表merge到branch,同步的依據(jù)是兩個(gè)表的pk
when matched then? update set b.sqlscripe=c.sqlscripe,b.author=c.author? --如果pk值是相同則將指定表的值更新到目標(biāo)表
when not matched then ? --如果pk值不一至,則將源表中的數(shù)據(jù)整條插入到目標(biāo)表中
insert values (c.pk, c.fk, c.createtime, c.lastmodifytime,c.author,c.module,c.deleteflag, c.scripttype);
commit;?????????????? --記得merge后必須commit,否則更改未能提交
4.為方便每次需要同步時(shí)自動(dòng)完成同步工作,可將該語句做成存儲(chǔ)過程或腳本來定時(shí)執(zhí)行或按要求手動(dòng)執(zhí)行,簡單說一下創(chuàng)建腳本的方法:
a.創(chuàng)建merge文件夾
b.先將merge語句寫完整后,存到merge.sql文件中
c.新建merge.bat文件,編輯后寫入以下內(nèi)容
sqlplus user/password@serverip/database @"%cd%\merge.sql"
用PL/SQL在oracle下執(zhí)行多個(gè)SQL腳本的方法:
PL/SQL developer-----File------New----command window
然后在彈出的窗口里依次執(zhí)行:
SQL @f:\abc\a.sql;
SQL @f:\abc\b.sql;
SQL @f:\abc\c.sql;
SQL*Plus 中執(zhí)行多個(gè)*.sql腳本文件的方法:
1、在SQL*Plus中執(zhí)行單個(gè)sql腳本文件: SQL@c:\aaa.sql ;
2、在SQL*Plus中執(zhí)行多個(gè)sql腳本文件: 比如你要執(zhí)行得2個(gè)sql腳本 a.sql 和 b.sql 現(xiàn)在你重新寫一個(gè)腳本 c.sql 其中得內(nèi)容如下 @@a.sql @@b.sql 然后把c.sql放在a.sql和 b.sql 得同一個(gè)目錄中即可,然后在sqlplus下執(zhí)行:SQL@c.sql 就可以了。
連接數(shù)據(jù)庫SQL connect / as sysdba
運(yùn)行腳本SQL @/admin/XX.sql 這里的/adminXX.sql 是絕對(duì)路徑名, linux系統(tǒng)的話要注意 目錄權(quán)限問題,windows就不用。