I knew I had this lieing around somewhereBasically take your file and load it to a staging table...This is assuming you get all of the data, because it also processes deletes...you can easily take that step out..Cut and paste the code, it should run as is...USE NorthwindGOSET NOCOUNT ONGOSELECT * FROM Employees-- Create some test dataSELECT * INTO EMP1 FROM Employees -- Pretend this is the New FileSELECT * INTO EMP2 FROM Employees -- Pretend this is the database table that needs to be acted uponGO-- Create some changesDELETE FROM EMP1 WHERE EmployeeID = 1INSERT INTO EMP1 (LastName, FirstName) SELECT 'Kaiser','Brett'UPDATE EMP1 SET LastName = 'White' WHERE EmployeeId = 4GO-- Take a LookSELECT * FROM EMP1-- Find New records SELECT l.* FROM EMP1 l LEFT JOIN EMP2 r ON l.EmployeeId = r.EmployeeId WHERE r.EmployeeID IS NULL-- Find deleted records SELECT r.* FROM EMP1 l RIGHT JOIN EMP2 r ON l.EmployeeId = r.EmployeeId WHERE l.EmployeeID IS NULLSELECT * FROM EMP1SELECT * FROM EMP2-- Find Updated Records SELECT * FROM EMP1 l INNER JOIN EMP2 r ON l.EmployeeId = r.EmployeeId WHERE ( l.LastName <> r.LastName OR l.FirstName <> r.FirstName)GO-- Add New reocrdsINSERT INTO EMP2 (LastName, FirstName) SELECT l.LastName, l.FirstName FROM EMP1 l LEFT JOIN EMP2 r ON l.EmployeeId = r.EmployeeId WHERE r.EmployeeID Is NULL-- Delete missingDELETE FROM EMP2WHERE EmployeeID IN ( SELECT r.EmployeeID FROM EMP1 l RIGHT JOIN EMP2 r ON l.EmployeeId = r.EmployeeId WHERE l.EmployeeID Is NULL)-- Update the changes ....update all columns for simplicityUPDATE r SET r.LastName = l.Lastname , r.FirstName = l.Firstname FROM EMP1 l INNER JOIN EMP2 r ON l.EmployeeId = r.EmployeeId WHERE ( l.LastName <> r.LastName OR l.FirstName <> r.FirstName)GO-- Take a peek SELECT * FROM EMP1UNION ALL SELECT * FROM EMP2 ORDER BY EmployeeIDGO-- Clean up this messSET NOCOUNT OFFDROP TABLE EMP1DROP TABLE EMP2GO
Brett8-)