具體方法如下:
成都創(chuàng)新互聯(lián)公司專注于東城企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城系統(tǒng)網(wǎng)站開發(fā)。東城網(wǎng)站建設(shè)公司,為東城等地區(qū)提供建站服務(wù)。全流程按需定制,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
1、首先找到oracle并點擊鼠標(biāo)右鍵,以管理員身份運行。
2、選擇創(chuàng)建新數(shù)據(jù)庫。
3、為新數(shù)據(jù)庫起個名字,其他沒提示一直點擊下一步。
4、添加口令。
5、選擇生成數(shù)據(jù)庫腳本。
6、生成成功。
倒數(shù)據(jù)的話不應(yīng)該包括本地盤符等信息吧。
一種是到處二進制文件,另一種是到處腳本,比如一個xxx.sql
然后你在另外機器上運行sqlplus,在里面輸入@xxx.sql就可以運行該腳本了,如果不在一個目錄下需要指明腳本文件路徑。
為方便完成指定數(shù)據(jù)表的同步操作,可以采用dblink與merge結(jié)合的方法完成。
操作環(huán)境: 此數(shù)據(jù)庫服務(wù)器ip為192.168.196.76,有center與branch兩個庫,一般需要將center的表數(shù)據(jù)同步到branch,center為源庫,branch為目標(biāo)庫,具體步驟如下:
1.在源庫創(chuàng)建到目標(biāo)庫的dblink
create database link branch???? --輸入所要創(chuàng)建dblink的名稱,自定義?? connect to dbuser identified by “password”? --設(shè)置連接遠程數(shù)據(jù)庫的用戶名和密碼?? using '192.168.196.76/branch';? --指定目標(biāo)數(shù)據(jù)庫的連接方式,可用tns名稱
在創(chuàng)建dblink時,要注意,有時候可能會報用戶名和密碼錯誤,但實際上我們所輸入的賬戶信息是正確的,此時就注意將密碼的大小寫按服務(wù)器上所設(shè)置的輸入,并在賬號密碼前號加上雙引號(服務(wù)器版本不同造成的)。
2.成功后驗證dblink
select * from tb_bd_action@branch; --查詢創(chuàng)建好的brach庫
正常情況下,如果創(chuàng)建dblink成功,可采用該方式訪問到遠程數(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ù)是兩個表的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.為方便每次需要同步時自動完成同步工作,可將該語句做成存儲過程或腳本來定時執(zhí)行或按要求手動執(zhí)行,簡單說一下創(chuàng)建腳本的方法:
a.創(chuàng)建merge文件夾
b.先將merge語句寫完整后,存到merge.sql文件中
c.新建merge.bat文件,編輯后寫入以下內(nèi)容
sqlplus user/password@serverip/database @"%cd%\merge.sql"
批量插入數(shù)據(jù)腳本
1、第一種批量插入數(shù)據(jù)腳本,可以基本滿足要求。理解上較為簡單,所以這個最常用。
NEXTVAL和CURRVAL的區(qū)別:
1、如果 sequence.CURRVAL 和 sequence.NEXTVAL 都出現(xiàn)在一個 SQL 語句中,則序列只增加一次。在這種情況下,每個 sequence.CURRVAL 和 sequence.NEXTVAL 表達式都返回相同的值,不管在語句中sequence.CURRVAL 和 sequence.NEXTVAL 的順序。
執(zhí)行腳本結(jié)果如下:
3、兩個表,同時批量插入數(shù)據(jù)的腳本
3、
4、 涉及子表時,批量插入數(shù)據(jù)腳本,
5、 批量修改數(shù)據(jù) :
時間取數(shù)方式:
一、SYSTIMESTAMP(取當(dāng)前系統(tǒng)值)
二、SYSDATE(取當(dāng)前系統(tǒng)值,但只精確到時,分和秒都為0)
三、固定值為:TO_TIMESTAMP ('2019-2-12 15:24:45.703000', 'yyyy-mm-dd hh24:mi:ss.ff6')
把固定的字段改為變量:
方式一:’||i||’ 例:’{“no”:“111’||i||’”}’(此方式)
方式二:concat 例:concat(concat(’{“blNo”:111"’,i),’"}’)
要在sql下面執(zhí)行shell語句,用!符號,不過功能有限;有的時候打不到我們想要的效果!先給你兩個實例;
要在后臺登陸;plsql中測試不行
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
其中需要用絕對路徑;該腳本里面的內(nèi)容只是ls一下;就這樣了