我的問題是,有沒有辦法,我可以dynamicaly只複製數據,這是新的,更新已更改的數據?
是
首先我的技術做到這一點:
- 製作一個動態查詢
主要思想是,以檢查是否ID已經不存在或者雖然存在這取決於on script
True:存在(插入)
錯誤:不存在(更新)
現在:動態查詢像這樣
select
'Begin' + Char(13) + Char(10) -- Now i do this becouse i well declare a variblae So every time generate make a seperator to avoid error
'Declare @ID Int '+ Char(13) + Char(10)
'select @ID =' + A.ID -- now make Select Fields or supQuery To GEt the ID From Old Data Base
'if Not EXISTS (SELECT 1 FROM MyTable WHERE ID [email protected] ) ' + Char(13) + Char(10) -- @ID Come From OLD Data Base And i Check it in the new Data base
'Insert into MyTable (Fields) '+ Char(13) + Char(10)
'Values ('+ Char(13) + Char(10)
+' '+ '@ID'+ Char(13) + Char(10)
+','+ Cast(Isnull(''''+A.Nvarchar(50)+'''' ,'New') As NVarChar(100)) + Char(13) + Char(10)--EXP With Nvarchar
+','+ IsNull(Cast(A.INT || Decimal .ETC As NVarChar(10)) ,'0') + Char(13) + Char(10)--EXP With INT
+') ; '+ Char(13) + Char(10)
'End' + Char(13) + Char(10)
'Else ' + Char(13) + Char(10)
'Update MyTable Set ' + Char(13) + Char(10)
+' '+'ID = @ID' + Char(13) + Char(10)
+','+ 'Nvarchar = '++','+ Cast(Isnull(''''+A.Nvarchar(50)+'''' ,'New') As NVarChar(100)) + Char(13) + Char(10)--EXP With Nvarchar
+','+ 'INT = ' +','+ IsNull(Cast(A.INT || Decimal .ETC As NVarChar(10)) ,'0')+ Char(13) + Char(10)--EXP With INT
+ ' Where ID ='+''''+A.ID+'''; ' + Char(13) + Char(10) -- Dont Forget This : that make the Select Genertate ROw By Row
+ 'GO ' + Char(13) + Char(10)
+' End ; ' + Char(13) + Char(10)
FROM MyTable As A
注:U運行此腳本從舊的數據庫並運行它在新的DB
我希望這幫助ü因爲你不給我一個EXP
您的意思是重複(** **不是** **)。另外「如果主鍵存在」僅僅是使用'WHERE NOT EXISTS(...)'的問題,您可以考慮很多現有問題。 ***但是:***你繼續說你想更新更改的數據。這是一個完全獨立的問題。請[編輯]你的問題來澄清。 –