开发者

SQL Query to copy tables between servers with auto insert / update depending on Identity column

Let's say I have 2 servers, and one identical table per server. In each tables, I have identity increment on (by 1 if u ask), and there is 'time' column to note when was the record updated/inserted.

so kinda like this:

ID    Content     Time
1     banana      2011-01-01 09:59:23.000
2     apple       2011-01-02 12:41:01.000
3     pear        2011-04-05 04:05:44.000

I want to copy (insert/update) all the contents from one table to another periodically with this requirements:

a. copy (insert/update) only before certain MONTH. i.e before August 2011. this is easy though.

b. insert only if records is really new (maybe if the ID isn't exist?)

c. update if you find the 'Time' column is newer (basically that means there is an update at that record) than the last performed copy (I save the date/time of last copy too)

I could do all that by building a program and check it record by record, but with hundred thousands records, it would be pretty slow.

Could it be done using just query?

Btw I'm us开发者_高级运维ing this query to copy between servers and I'm using SQL Server 2005

INSERT OPENQUERY(TESTSERVER, 'SELECT * FROM Table1')
SELECT * FROM Table1

thx for da help :)


My strategy in a situation like this is:

first do an outer join and determine the state of the data into a temp table e.g.

   #temp
   id     state
   1      update
   2      copy
   3      copy
   4      insert

Then run n statements joining the three tables together, one for each of the states. Sometimes you can eliminate the multiple statements by entering empty rows in the target with the correct keys. Then you only need to do a more complex update/copy.

However since these are cross server - I'd suggest the following strategy - copy the source table over entirely to the other server, and then do the above on the other server.

Only after this do I do performance analysis to optimise if needed.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜