Benutzer mit den meisten Antworten
Kopieren von Daten zwischen zwei Datenbanken

Frage
-
Hallo zusammen,
ich habe in einer Datenbanktabelle Daten, die etwas unvollständig sind. In einer anderen Datenbanktabelle habe ich allerdings diese Daten gespeichert. Nun möchte ich, mittels SSMS, gern die vorhandenen Daten von der einen Datenbank in die andere kopieren. Ich muss allerdings nicht gesamte Spalteninhalte kopieren sondern nur einzelne Daten unter einer Bedingung.
Beispiel:
DB1: Tabelle: LandEnglisch, LandDeutsch (also die Namen eines Landes, aber die engl. Namen unvollständig)
DB2: Tabelle: LandEnglisch, LandDeutsch (alle Namen vollständig)
Nun sollen von DB2 die engl. Namen nach DB1 kopiert werden unter der Bedingung, dass die deutschen Namen übereinstimmen.Dazu habe ich noch keine Lösung gefunden mit "Update" bspw.
Grüße-
Dietrich
Antworten
-
Hallo Dietrich,
poste doch bitte die Tabellendefinitionen als CREATE TABLE Statements, dazu einige Inhalte als INSERT INTO Statements und das gewünschte Ergebnis der Aktualisierungsabfrage.
Das macht es uns erheblich einfacher, deine Strukturen und die Anforderungen zu verstehen.
Grundlegend könnte sowas in etwa wie folgt aussehen:
UPDATE Tabelle2 SET LandEnglisch = t1.LandEnglisch FROM Tabelle1 t1 WHERE Tabelle2.LandDeutsch = t1.LandDeutsch
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Christoph Muthmann Montag, 30. November 2015 14:23
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 31. Dezember 2015 10:53
-
Ich ergänze mal eben die Datenbanken und Schemata im Statement:
UPDATE DB1.dbo.Tabelle1 SET LandEnglisch = t2.LandEnglisch FROM DB2.dbo.Tabelle2 t2 WHERE DB1.dbo.Tabelle1.LandDeutsch = t2.LandDeutsch;
Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu
- Als Antwort vorgeschlagen Christoph Muthmann Montag, 30. November 2015 14:23
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 31. Dezember 2015 10:53
-
Hi Stefan,
Dein Vorschlag hat folgendermaßen funktioniert:
Die Tabelle 'All Countries' ist so zu sagen geöffnet in SSMS, unten gezeigter Code wird als SQL ausgeführt. Die zu 'All Countries' unter einer Bedingung hinzu zu fügenden Daten (Shortcut) werden aus der Datenbank 'Geografie', Tabelle 'Laender', Feld 'Alpha3' geholt.UPDATE [All Countries] SET CountryShortcut = Geografie.dbo.Laender.ALPHA3 FROM Geografie.dbo.Laender INNER JOIN [All Countries] ON Geografie.dbo.Laender.englisch = [All Countries].CountryNameEnglish
Ich danke dir vielmals für den Tipp, der mir zukünftig viel Arbeit ersparen wird!
Grüße aus Salzburg-
Alle Antworten
-
Hallo Dietrich,
poste doch bitte die Tabellendefinitionen als CREATE TABLE Statements, dazu einige Inhalte als INSERT INTO Statements und das gewünschte Ergebnis der Aktualisierungsabfrage.
Das macht es uns erheblich einfacher, deine Strukturen und die Anforderungen zu verstehen.
Grundlegend könnte sowas in etwa wie folgt aussehen:
UPDATE Tabelle2 SET LandEnglisch = t1.LandEnglisch FROM Tabelle1 t1 WHERE Tabelle2.LandDeutsch = t1.LandDeutsch
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Christoph Muthmann Montag, 30. November 2015 14:23
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 31. Dezember 2015 10:53
-
Hallo Dietrich,
ja, die Statements und die gewünschte Ausgabe kannst Du hier posten. Können ja nicht allzu lang/groß sein.
Der Vorschlag von mir bzgl. des UPDATE Statements hat nicht geholfen? (Oder noch nicht ausprobiert?)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Ich ergänze mal eben die Datenbanken und Schemata im Statement:
UPDATE DB1.dbo.Tabelle1 SET LandEnglisch = t2.LandEnglisch FROM DB2.dbo.Tabelle2 t2 WHERE DB1.dbo.Tabelle1.LandDeutsch = t2.LandDeutsch;
Einen schönen Tag noch, Christoph -- Data Platform MVP - http://www.insidesql.org/blogs/cmu
- Als Antwort vorgeschlagen Christoph Muthmann Montag, 30. November 2015 14:23
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 31. Dezember 2015 10:53
-
Hi Stefan,
Dein Vorschlag hat folgendermaßen funktioniert:
Die Tabelle 'All Countries' ist so zu sagen geöffnet in SSMS, unten gezeigter Code wird als SQL ausgeführt. Die zu 'All Countries' unter einer Bedingung hinzu zu fügenden Daten (Shortcut) werden aus der Datenbank 'Geografie', Tabelle 'Laender', Feld 'Alpha3' geholt.UPDATE [All Countries] SET CountryShortcut = Geografie.dbo.Laender.ALPHA3 FROM Geografie.dbo.Laender INNER JOIN [All Countries] ON Geografie.dbo.Laender.englisch = [All Countries].CountryNameEnglish
Ich danke dir vielmals für den Tipp, der mir zukünftig viel Arbeit ersparen wird!
Grüße aus Salzburg-