sql >> Database teknologi >  >> RDS >> Oracle

oracle slette data fra ekstern SQL Server-tabel

Jeg tror, ​​det bedre spørgsmål er:Hvad er den bedste måde at flytte data fra SQL Server til Oracle, som sletter fra MSSS hver vellykket leveret række?

Du gør disse i en løkke for at sikre, at når du tilføjer til den ene, sletter du fra den anden.

Hvis der sker en ukendt tilfældig ting med fejl på indsatsen, undgår du at fjerne kildeposten.

Det er kernen, ikke?

Der er meget bedre måder at håndtere denne form for databevægelse på end ved at forpligte sig efter hver indsættelse/sletning af distribueret transaktionsløkke.

Først en commit midt i en loop er bare dårlig. I Oracle er det en god måde at få andre sessioner til at få ORA-01555-fejl. Så det ville jeg undgå, hvis det var muligt.

For det andet bør du absolut vide, hvad der er mulige årsager til rimelige fejl ved indsættelse. Du overtræder en kolonnelængde, en FK, en UK... der er en begrænset liste over, hvad der kan gå i stykker ved indsættelse. Store behårede dårlige pauser som Ude af stand til at udvide bordpladsen SKAL få systemet til at gå i stå. Ingen grund til at fælde for det. Men applikationsproblemer som jeg nævnte er nemme at administrere.

Hvis jeg skrev dette, ville jeg masseindsætte alle rækkerne ved hjælp af Oracles LOG FEJL I for at undgå en fuld TILBAGE, når kun én/få række(r) fejler.

Nu har du en tabel, som indeholder hver mislykket række og årsagen til den fejlede. Nu kan du på SQL Server-siden slette alle rækkerne IKKE PÅ listen over mislykkede ID'er.

Du har opnået det samme, men med sæt-baserede operationer i stedet for LANGSOM FOR LANGSOMT, ups, jeg mener række for række.




  1. Hvordan bestemmer MySQL, hvornår der skal vises eksplicitte tegnsæt og sorteringsværdier?

  2. Brug af MySQL relationelle databaser på Gentoo

  3. MySQL-forespørgsel for at tildele et unikt tilfældigt tal til hver række

  4. Sådan viser du en dato i amerikansk datoformat i SQL Server (T-SQL)