Daten in andere Tabelle umziehen

PeterS

Aktiver Benutzer
Beiträge
27
Ich möchte in einer bestehenden Datenbank eine alte Tabelle {TABELLE-ALT} auflösen und die enthaltenen Daten in eine neue Tabelle {TABELLE-NEU} "umziehen". Relationen sind dabei zunächst nicht zu beachten (werden in einem zweiten Lauf gesundert nachgearbeitet. {TABELLE-ALT} soll im Anschluss gelöscht werden.

Wie müßte der SQL-Code aussehen, damit {Quellfeld1}, {Quellfeld2} etc. aus {TABELLE-ALT} ausgelesen und 1 : 1 in {Zielfeld1}, {Zielfeld2} etc. aus {TABELLE-NEU} übertragen wird?
 
Werbung:
Nach weiterer Überlegung werde ich immer unschlüssiger, ob man bestimmte Felder aus der relational verknüpften (alles 1:1) Tabellen-Altstruktur nicht doch gleich mit transferieren sollte...
Mit geht es v.a. um den Weg: Erst alles benötige per SELECT einsammeln und weitere Tabellen per WHERE ankoppeln, dann ... ??? (Die eingesammelten Feldinhalte erstmal in Variablen parken? und die dann per INSERT in die neue Tabelle? Oder macht man das anders?) UND: das ganze muß ja dann wohl noch in eine Schleife, welche den Transfer Satzweise abarbeitet?
 
Wie müßte der SQL-Code aussehen, damit {Quellfeld1}, {Quellfeld2} etc. aus {TABELLE-ALT} ausgelesen und 1 : 1 in {Zielfeld1}, {Zielfeld2} etc. aus {TABELLE-NEU} übertragen wird?

Ich erzeuge mir eine Tabelle "alt" und daraus dann "neu":

Code:
test=*# create table alt as select s, random() from generate_series(1,5) s;
SELECT 5
test=*# select * from alt;
 s |  random   
---+-------------------
 1 | 0.657899246085435
 2 | 0.136175284627825
 3 | 0.476951754651964
 4 | 0.969655361492187
 5 | 0.468550578225404
(5 Zeilen)

test=*# create table neu as select * from alt;
SELECT 5
test=*# select * from neu;
 s |  random   
---+-------------------
 1 | 0.657899246085435
 2 | 0.136175284627825
 3 | 0.476951754651964
 4 | 0.969655361492187
 5 | 0.468550578225404
(5 Zeilen)

test=*#

Wer ein Problem findet darf es behalten oder melden.
 
Werbung:
Grundsätzlich mit
Code:
INSERT INTO tbl_neu(spalte1_neu,spalte2_neu)
SELECT spalte1_alt,spalte2_alt
FROM tbl_alt
Das kann man jetzt natürlich beliebig anpassen um beim Umzug zu konvertieren etc.
 
Zurück
Oben