Skript zum Datenabgleich zweier Tabellenspalten aus versch. Datenbanken
Hallo,
ich stehe vor folgendem Problem:
Ich habe eine Datenbank (DB_QUELLE), in der Werte einer bestimmten Spalte (COL_QUELLE) einer Tabelle (TAB_QUELLE) von einem Sachbearbeiter regelmäßig gepflegt werden. Aus dieser Spalte möchte ich eine Spalte einer Tabelle einer anderen Datenbank
(DB_ZIEL.TAB_ZIEL.COL_ZIEL) regelmäßig per Skript aktualisieren.
Hierbei soll geprüft werden ob der Wert in der Zielspalte bereits existiert.
Wenn er bereits vorhanden ist, soll nichts passieren.
Wenn der Wert noch nicht vorhanden ist soll er erstellt werden
Beispiel:
Werte aus der Quellspalte:
22
23
Werte der Zielspalte (vor Skriptaufruf):
21
22
Werte der Zielspalte (nach Skriptaufruf):
21
22
23
Kann mir hierfür jemand eine stichwortartige Empfehlung für die Vorgehensweise geben?
Vielen Dank,
LichtAnd
ich stehe vor folgendem Problem:
Ich habe eine Datenbank (DB_QUELLE), in der Werte einer bestimmten Spalte (COL_QUELLE) einer Tabelle (TAB_QUELLE) von einem Sachbearbeiter regelmäßig gepflegt werden. Aus dieser Spalte möchte ich eine Spalte einer Tabelle einer anderen Datenbank
(DB_ZIEL.TAB_ZIEL.COL_ZIEL) regelmäßig per Skript aktualisieren.
Hierbei soll geprüft werden ob der Wert in der Zielspalte bereits existiert.
Wenn er bereits vorhanden ist, soll nichts passieren.
Wenn der Wert noch nicht vorhanden ist soll er erstellt werden
Beispiel:
Werte aus der Quellspalte:
22
23
Werte der Zielspalte (vor Skriptaufruf):
21
22
Werte der Zielspalte (nach Skriptaufruf):
21
22
23
Kann mir hierfür jemand eine stichwortartige Empfehlung für die Vorgehensweise geben?
Vielen Dank,
LichtAnd
Please also mark the comments that contributed to the solution of the article
Content-Key: 63896
Url: https://administrator.de/contentid/63896
Printed on: April 20, 2024 at 05:04 o'clock
1 Comment
Ich sehe das richtig, es gibt keine weiteren Schlüssel, die diese 2 Tabellen irgendwie miteinander verknüpfen?
Dann sieht das in etwa so aus (Tab1 = Quelle, Tab2 = Ziel):
INSERT INTO Tab2 ( Test2 )
SELECT Tab1.Test1
FROM Tab1
WHERE test1 not in (select test2 from Tab2);
Allerdings kann das langsam werden bei vielen Datensätzen, da kann es schneller sein die Spalte in TAB2 zum Primärschlüssel zu machen und die Fehlermeldungen das eine Verletzung des Primarschlüssels vorkommt zu ignorieren.
Dann sieht das in etwa so aus (Tab1 = Quelle, Tab2 = Ziel):
INSERT INTO Tab2 ( Test2 )
SELECT Tab1.Test1
FROM Tab1
WHERE test1 not in (select test2 from Tab2);
Allerdings kann das langsam werden bei vielen Datensätzen, da kann es schneller sein die Spalte in TAB2 zum Primärschlüssel zu machen und die Fehlermeldungen das eine Verletzung des Primarschlüssels vorkommt zu ignorieren.