Witam,
posiadam dwie bazy danych [MSSQL] i [MYSQL].
Obydwie mają te same tabele.
No i chciałbym teraz zaktualizować dane w bazie MYSQL.
Stworzyłem więc obiekt linked serwers (łącze się tam z bazą MYSQL poprzez ODBC).
Poprzez zapytanie zapisuję do tabeli indeksy produktów, które różnią się pomiędzy MS a MY.
insert into tabela_chwilowa select b.id from OPENQUERY(mysql, ''select id,nazwa,cena from test") a, test b where a.id=b.id and a.nazwa<>b.nazwa
A teraz chciałbym zaktualizować dane w MY.
przykład1:
update OPENQUERY(mysql, ''select id,nazwa,cena from test") set
nazwa=b.nazwa from test b where id=b.id and id in (select id from tabela_chwilowa)
przykład2:
declare abc cursor for
select a.id,b.nazwa from tabela_chwilowa a,test b where a.id=b.id
open abc
fetch next from abc into @id,@nazwa
while @@fetch_status=0
begin
EXEC('update test set nazwa=? where id=?',@nazwa,@id) AT [mysql]
fetch next from abc into @id,@nazwa
end
Oczywiście obydwa przykłady działają, ale niestety BARDZO WOLNO,
ponieważ do poprawienia jest około 100 000 rekordów.
Czy macie jakiś inny sposób aby to przyśpieszyć ?
Zastanawia mnie, w jaki sposób to działa w programach z rodzaju SQL Compare.
Z góry dzięki za wszelką pomoc :)