Announcement

Collapse
No announcement yet.

Daten in neues Schema migrieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Daten in neues Schema migrieren

    Moin!

    Ich sehe vor der Aufgabe Daten einer SQL Datenbank in eine andere SQL Datenbank zu migrieren. Neben Namensänderungen und hinzugefügten/entfernten Spalten, gibt es noch die Problematik, dass der Primärschlüssel einer Tabelle in eine andere Tabelle verlagert werden soll. Alle Tabellen die auf die alte ID verwiesen haben, sollen jetzt auf eine ID in dieser neuen Tabelle verweisen. Ein kurzes Beispiel ist in folgendem Bild zu sehen:



    Das Hinzufügen und Entfernen von Spalten ist kein Problem. Ebenso wenig die Namensänderung. Allerdings weiß ich nicht, wie ich das Problem mit der ID lösen kann.

    Bin für jede Hilfe dankbar! Von SQL-Beispielen bis hin zu Programm-Empfehlungen...

  • #2
    [highlight=sql]
    INSERT INTO TableID (Id, OldId)
    (
    SELECT sequence.nextval, OldId
    FROM TableA
    )
    [/highlight]

    Das sollte Dir TableId mit neuen Werten befüllen und jeweils den alten Wert zuordnen. Als zweiten Schritt:

    [highlight=sql]
    UPDATE TableB tb
    SET tb.Id =
    (
    SELECT tid.Id
    FROM TableId tid
    WHERE tid.OldId = tb.Id
    )
    [/highlight]

    Das aber nur wenn Du auch die IDs von TableB umziehen musst auf das anscheinend neue System. Mir ist nur schleierhaft warum Du eine neue Id Tabelle haben willst. Man könnte doch die IDs auch einfach an die alte Anhängen und den Foreign Key umbiegen.

    Comment


    • #3
      SELECT sequence.NEXTVAL, OldId
      FROM TableA

      Genau sowas habe ich gesucht Werde es gleich mal ausprobieren. Vielen Dank

      EDIT: Da ich eine MS-SQL DB nutze, funktioniert das nicht auf Anhieb. Ich denke ich werde die Spalte Id einfach als Auto Increment definieren.
      Zuletzt editiert von PranKe01; 03.01.2012, 12:07.

      Comment


      • #4
        Ja genau Das ist ein Beispiel aus einer Oracle DB für ein Autoinkrement Feld.

        Comment

        Working...
        X