我每週收到一個CSV文件,該文件使用BULK INSERT導入到我的SQL數據庫中。我插入到臨時表中,然後通過插入新記錄並更新任何已修改的記錄,將其與主表合併。該代碼是:批量插入後的SQL觸發器
BULK INSERT dbo.temp
FROM 'C:\Users\Administrator\Documents\20120125.csv'
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n');
MERGE dbo.main AS TargetTable
USING dbo.temp AS SourceTable
ON (TargetTable.name = SourceTable.name)
WHEN NOT MATCHED BY TARGET
THEN INSERT (name, age, gender, father, mother, teacher, mathsrating, historyrating, sciencerating, englishrating)
VALUES(SourceTable.name, SourceTable.age, SourceTable.gender, SourceTable.father, SourceTable.mother, SourceTable.teacher, SourceTable.mathsrating, SourceTable.historyrating, SourceTable.sciencerating, SourceTable.englishrating)
WHEN MATCHED
THEN UPDATE SET
TargetTable.name = SourceTable.name,
TargetTable.age = SourceTable.age,
TargetTable.gender = SourceTable.gender,
TargetTable.father = SourceTable.father,
TargetTable.mother = SourceTable.mother,
TargetTable.teacher = SourceTable.teacher,
TargetTable.mathsrating = SourceTable.mathsrating,
TargetTable.historyrating = SourceTable.historyrating,
TargetTable.sciencerating = SourceTable.sciencerating,
TargetTable.englishrating = SourceTable.englishrating;
DELETE FROM dbo.temp
我想達到什麼是具有由存儲在與他們的「上一個」值的新表,讓我有什麼改變了歷史的更新覆蓋的記錄。我對SQL相當陌生,但研究了一些似乎觸發器可能是採取的方法,但會歡迎任何有關如何解決此問題的建議。
感謝
馬特
是的,對不起,這是SQL Server 2012的 – MrMatt