Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SSIS - Insert new rows, update rows

What is the "best" or recommended method to check which row has changed and which rows already exist? I found few articles but I am not sure if these methods are the best:

http://www.ssistalk.com/2007/03/09/ssis-using-a-checksum-to-determine-if-a-row-has-changed/
http://itssmee.wordpress.com/2010/10/03/ssis-insert-and-update-rows-in-a-table-based-on-the-contents-of-a-excel-file/
http://consultingblogs.emc.com/jamiethomson/archive/2006/09/12/SSIS_3A00_-Checking-if-a-row-exists-and-if-it-does_2C00_-has-it-changed.aspx

I need this for really large amounts of data from 25 databases

EDIT:

In this article... http://consultingblogs.emc.com/jamiethomson/archive/2006/09/12/SSIS_3A00_-Checking-if-a-row-exists-and-if-it-does_2C00_-has-it-changed.aspx ... how do I add part for updating records? Do I use OLE DB Command or there's something else in this article I don't see?

like image 805
ilija veselica Avatar asked Oct 10 '22 03:10

ilija veselica


1 Answers

Those links are the best out there. Phil and Jamie are very knowledgeable on the subject. Your only other real alternative is to load the whole table and use T-SQL's MERGE command to figure out differences.

Jamie Thomson's post has three outputs that end in Union Alls that don't really "do work" on your end database. To be clear, one of those outputs you can discard - because it's the "no change" output (the one that's labeled "Age has stayed the same"). The one labeled "New Customers" is one you would probably route into an OLE DB Destination. The one labeled "Age has changed" is the one you'd route into an OLE DB Command transform.

Now, the OLE DB Command transform doesn't work that fast. There are ways around that slowness, but a quick search should fix that problem for you.

like image 89
Todd McDermid Avatar answered Oct 13 '22 20:10

Todd McDermid