同步兩個資料庫之間兩表的資料也許的資料庫管理員偶爾需要做的一件事情,下面來記錄一下常用的兩種方法:
方法一:使用delete、truncate
方法二:使用 merge into ,merge是在sql server 2008被引入,它能將insert,update,delete簡單的並為一句。根據與源表聯接的結果,對目標表執行插入、更新或刪除操作。例如,根據在另乙個表中找到的差異在乙個表中插入、更新或刪除行,可以對兩個表進行同步。通過這個描述,我們 可以看出merge是關於對於兩個表之間的資料進行操作的。
可以想象出,需要使用merge的場景比如:
資料同步
資料轉換
基於源表對目標表做insert,update,delete操作
下面是我把公司正式庫里的產品資訊表同步到測試庫裡面的兩種方法:
方法一:
1)truncate f_test..biitm01t 清空表資料
2)insert f_test..biitm01t select * from f_formal..biitm01t 把正式庫的產品資訊插入到test庫裡面。
select
表名=case when a.colorder=1 then d.name else 」 end,
欄位名=a.name
from syscolumns a
left join systypes b on a.xusertype=b.xusertype
inner join sysobjects d on a.id=d.id and d.xtype=』u』 and d.name<>』dtproperties』
left join syscomments e on a.cdefault=e.id
left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id
left join sys.extended_properties f on d.id=f.major_id and f.minor_id=0
where d.name=』biitm01t』
order by a.id,a.colorder
你也可以直接 select * from 表 然後乙個列乙個列記錄下(會很累),通過以上方法直接複製所有欄位名,方便以下運用。
得出相關表的所有列名後,下面就是運用到merge into 裡面去了。快速運用表字段進行貼上到merge 裡面的方法是:將所有字段複製貼上到excel裡面,然後用excel & 符號合併增加字符號,如圖 ,直接複製excel裡面值貼上進去,就不用乙個乙個輸了。
merge into f_test..biitm01t as t
using f_formal..biitm01t as s
on t.itemcd=s.itemcd
when matched ——————–當上面on 條件相同時,目標表(f_formal..biitm01t)的資料被更新
then update set
t.itemcd=s.itemcd,
t.itemnm=s.itemnm,
t.itemnm2=s.itemnm2,
t.itemkind=s.itemkind,
t.pogbn=s.pogbn,
t.pjtcd=s.pjtcd
when not matched ——————目標表中沒有的itemcd,在源表(f_test)中有,則這些行插入到目標表
then insert values (
s.itemcd,
s.itemnm,
s.itemnm2,
s.itemkind,
s.pogbn,
s.pjtcd
)when not matched by source ——目標表存在而源表不存在的資料行,則刪除目標表中的這些行
then delete;
執行以上**成功後,f_test 庫裡面的biitm01t 表就跟正式庫裡面 的biitm01t 表的資料一樣了。
備註:上面的merge關鍵字後面使用了多個when…then語句,而這個語句是可選的.也可以僅僅新增或是僅僅刪除,當然第一種方法比較簡便,但如果當時的資料被人使用的情況下,使用delete 的方法會給使用者帶來不便,根據實際情況而定。
SQL 利用merge 同步資料庫之間表的資料
同步兩個資料庫之間兩表的資料也許的資料庫管理員偶爾需要做的一件事情,下面來記錄一下常用的兩種方法 方法一 使用delete truncate 方法二 使用 merge into merge是在sql server 2008被引入,它能將insert,update,delete簡單的並為一句。根據與源...
SQL 利用merge 同步資料庫之間表的資料
同步兩個資料庫之間兩表的資料也許的資料庫管理員偶爾需要做的一件事情,下面來記錄一下常用的兩種方法 方法一 使用delete truncate 方法二 使用 merge into merge是在sql server 2008被引入,它能將insert,update,delete簡單的並為一句。根據與源...
SQL 資料庫 同步(二)
二 受到老同事資料庫同步軟體的啟發,我製作了乙個基於觸發器的同步。基本風格和老同事的一樣,我們還是先來看介面 繼續沿用了前人的智慧型。第一次介面跳轉時,需要的時間比較長。後台工作比較多 剛剛幾個圖形不好擷取,就是工具裡面的,包括 表比較,完整備份,差異備份和增量備份。這個資料庫同步實現的原理是 在主...