sql >> Databáze >  >> RDS >> Oracle

Oracle odstraní data ze vzdálené tabulky SQL Server

Myslím, že lepší otázka zní:Jaký je nejlepší způsob, jak přesunout data ze serveru SQL Server do Oracle, který odstraní z MSSS každý úspěšně doručený řádek?

Děláte to ve smyčce, abyste zajistili, že když přidáte do jednoho, odstraníte z druhého.

Pokud dojde k nějaké neznámé náhodné věci s chybou na insertu, vyhnete se odstranění zdrojového záznamu.

To je podstata, ne?

Existují mnohem lepší způsoby, jak zvládnout tento druh přesunu dat, než potvrzení po každém vložení/vymazání distribuované transakční smyčky.

Za prvé, potvrzení uprostřed smyčky je prostě špatné. V Oracle je to dobrý způsob, jak způsobit, že ostatní relace získají chyby ORA-01555. Takže bych se tomu pokud možno vyhnul.

Za druhé byste měli absolutně vědět, jaké jsou možné příčiny rozumných chyb na vložce. Porušili jste délku sloupce, FK, UK... existuje konečný seznam toho, co by se mohlo při vložení zlomit. Velké chlupaté špatné přestávky jako Nelze rozšířit tabulkový prostor BY MĚLY způsobit, že se systém zastaví. Na to není třeba past. Ale problémy s aplikacemi, jak jsem zmínil, lze snadno zvládnout.

Kdybych to psal, hromadně bych vložil všechny řádky pomocí logu Oracle CHYBY DO abyste se vyhnuli úplnému ROLLBACK, když selže pouze jeden/několik řádků.

Nyní máte tabulku, která obsahuje každý neúspěšný řádek a důvod, proč selhal. Nyní můžete na straně serveru SQL odstranit všechny řádky, které NEJSOU V seznamu neúspěšných ID.

Dosáhli jste stejné věci, ale s operacemi založenými na množině namísto SLOW-BY-SLOW, ooops, myslím řádek po řádku.




  1. Spusťte sp_msforeachdb v aplikaci Java

  2. Funkce AVG() v MariaDB

  3. Oracle - Nelze použít znak * s jiným sloupcem v klauzuli select

  4. mysql jak získat 2. nejvyšší hodnotu se skupinou a v levém spojení