none
Kopieren von Daten zwischen zwei Datenbanken RRS feed

  • 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

    Samstag, 28. November 2015 08:54

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

    Samstag, 28. November 2015 09:17
    Moderator
  • 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

    Montag, 30. November 2015 09:54
  • 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-

    • Bearbeitet dherrmann Montag, 30. November 2015 10:15
    • Als Antwort markiert dherrmann Montag, 30. November 2015 16:23
    Montag, 30. November 2015 09:57

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

    Samstag, 28. November 2015 09:17
    Moderator
  • Hi Stefan,

    danke für die schnelle Antwort! Werde mal schauen nch den 'gewünschten' Daten.
    Kommende Woche kümmere ich mal drum.

    Doch wohin soll ich es posten? Datenbanktabellen-Daten hier ins Forum...???

    Grüße-


    Dietrich

    Sonntag, 29. November 2015 19:34
  • 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

    Montag, 30. November 2015 07:41
    Moderator
  • 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

    Montag, 30. November 2015 09:54
  • 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-

    • Bearbeitet dherrmann Montag, 30. November 2015 10:15
    • Als Antwort markiert dherrmann Montag, 30. November 2015 16:23
    Montag, 30. November 2015 09:57