Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle usuwa dane ze zdalnej tabeli SQL Server

Myślę, że lepszym pytaniem jest:Jaki jest najlepszy sposób przeniesienia danych z SQL Server do Oracle, który usuwa z MSSS każdy pomyślnie dostarczony wiersz?

Robisz to w pętli, aby mieć pewność, że po dodaniu do jednego, usuniesz z drugiego.

Jeśli jakaś nieznana przypadkowa rzecz stanie się z błędem we wstawce, unikniesz usunięcia rekordu źródłowego.

Oto sedno sprawy, prawda?

Istnieją znacznie lepsze sposoby obsługi tego rodzaju przenoszenia danych niż zatwierdzanie po każdym wstawieniu/usunięciu rozproszonej pętli transakcyjnej.

Po pierwsze, zatwierdzenie w środku pętli jest po prostu złe. W Oracle jest to dobry sposób na spowodowanie, aby inne sesje otrzymywały błędy ORA-01555. Więc unikałbym tego, jeśli to możliwe.

Po drugie, powinieneś bezwzględnie wiedzieć, jakie są możliwe przyczyny rozsądnych błędów przy wstawianiu. Naruszasz długość kolumny, FK, UK... istnieje skończona lista tego, co może się zepsuć przy wstawianiu. Duże, włochate, złe przerwy, takie jak Nie można rozszerzyć obszaru tabel, POWINNY spowodować zatrzymanie systemu. Nie ma potrzeby łapać na to pułapki. Ale problemy z aplikacjami, o których wspomniałem, są łatwe do opanowania.

Gdybym to pisał, wstawiłbym wszystkie wiersze zbiorczo za pomocą LOG Oracle BŁĘDY W aby uniknąć pełnego WYCOFANIA, gdy tylko jeden/kilka wierszy nie działa.

Teraz masz tabelę, która zawiera każdy nieudany wiersz i przyczynę niepowodzenia. Teraz możesz po stronie SQL Server usunąć wszystkie wiersze NIE Z listy nieudanych identyfikatorów.

Udało Ci się osiągnąć to samo, ale z operacjami opartymi na zbiorach zamiast WOLNO-PO-WOLNIE, ups, mam na myśli wiersz po wierszu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj zakres adresów IP od xxx.xxx.xx.0/16

  2. Jak połączyć dwie tabele na podstawie wartości podciągu pól?

  3. wyrażenie regularne dla wszystkich znaków akcentowanych w Oracle

  4. Słowo kluczowe FROM nie zostało znalezione tam, gdzie oczekiwano, wybór tekstu Oracle SQL

  5. DBMS_LOB.SUBSTR() wyrzuca zbyt mały bufor ciągu znaków