pg_dump van view daten

Datenbank Migration (z. B. von MySQL auf PostgreSQL)
Antworten
rneumann
Neuer Benutzer
Beiträge: 3
Registriert: Di 24. Nov 2009, 16:52

pg_dump van view daten

Beitrag von rneumann »

Hallo,

Ich habe derzeit ein dummes problem und habe das Gefuehl das ich es via demm Falschen Weg probiere.
ich habe derzeit 2 Datenbanken, wo bei die eine Datenbank informationen enthaelt welche ich in der zweiten benoetige. Hierfuer wurden in der ersten Datenbank Views erzeugt welche die Daten zur verfuehgung stellen.

Mein problem ist nun das ich leider keine Netzwerk Verbindung zwischen denn beiden Systemen habe und somit ein Sneakernet machen muss (was auch nicht uebermaessig schlect ist da das update nur alle paar wochen passiert)

Meine idee war das Ergebniss von denn Views irgendwie in eine Datei zu dumpen (z.B. mit pg_dump) und die informationen dann in eine neue Table auf Databank 2 zu importieren. Leider spielt da aber pg_dump nicht mit, ich koennte zwar ein Select * From [view] machen und das in eine Datei umleiten aber dann muss ich das alles manuel in INSERT commands umwandeln :( .

Waere nett wenn Ihr mir da weiterhelfen koenntet.

Gruss

akretschmer
Erfahrener Benutzer
Beiträge: 7700
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Beitrag von akretschmer »

rneumann hat geschrieben:Hallo,

Ich habe derzeit ein dummes problem und habe das Gefuehl das ich es via demm Falschen Weg probiere.
ich habe derzeit 2 Datenbanken, wo bei die eine Datenbank informationen enthaelt welche ich in der zweiten benoetige. Hierfuer wurden in der ersten Datenbank Views erzeugt welche die Daten zur verfuehgung stellen.

Mein problem ist nun das ich leider keine Netzwerk Verbindung zwischen denn beiden Systemen habe und somit ein Sneakernet machen muss (was auch nicht uebermaessig schlect ist da das update nur alle paar wochen passiert)

Meine idee war das Ergebniss von denn Views irgendwie in eine Datei zu dumpen (z.B. mit pg_dump) und die informationen dann in eine neue Table auf Databank 2 zu importieren. Leider spielt da aber pg_dump nicht mit, ich koennte zwar ein Select * From [view] machen und das in eine Datei umleiten aber dann muss ich das alles manuel in INSERT commands umwandeln :( .

Waere nett wenn Ihr mir da weiterhelfen koenntet.

Gruss


COPY ist Dein Freund, copy (select * from view) to <file>, und das dann drüben einlesen.

Andreas
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

rneumann
Neuer Benutzer
Beiträge: 3
Registriert: Di 24. Nov 2009, 16:52

Beitrag von rneumann »

Hallo,

Danke für denn Tipp, war zwar nicht 100% das ergebniss was ich erhofft hatte, wollte eigentlich INSERT Statments haben, aber es funktioniert :) halbwegs. Hab ein dies bezüglich aber noch ein Problem. Ich wollte in der neue Tabelle wo ich die Daten rein kopiere eine neues Feld erzeugen, für einen PK, gesagt getan aber dann streikt leider der COPY Befehl da er keine Daten fuer

Hat hierzu noch einer eine idee oder sollte ich dann einefach den PK aus den existierenden Feldern erzeugen.

Gruss

symbiont
Erfahrener Benutzer
Beiträge: 1328
Registriert: Mo 17. Mär 2008, 11:45
Wohnort: NULL

Beitrag von symbiont »

du koenntest ja die views vor dem dumpen in entsprechende tabellen selecten ..

select ... into <dumpschema.dumptable> from view

<dumpschema> will ich hier hervorheben, weil du dann per pg-dump ausschließlich dieses schema dumpen kannst - anderer namespace halt - bessere trennung

akretschmer
Erfahrener Benutzer
Beiträge: 7700
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Beitrag von akretschmer »

rneumann hat geschrieben:Hallo,

Danke für denn Tipp, war zwar nicht 100% das ergebniss was ich erhofft hatte, wollte eigentlich INSERT Statments haben, aber es funktioniert :) halbwegs. Hab ein dies bezüglich aber noch ein Problem. Ich wollte in der neue Tabelle wo ich die Daten rein kopiere eine neues Feld erzeugen, für einen PK, gesagt getan aber dann streikt leider der COPY Befehl da er keine Daten fuer

Hat hierzu noch einer eine idee oder sollte ich dann einefach den PK aus den existierenden Feldern erzeugen.

Gruss


Versteh ich dich richtig, die Zieltabelle hat diese neue Spalte, die Ursprungstabelle nicht?

Falls ja: beim COPY (beim insert-copy) die Spalten nennen, die in der alten Tabelle sind. Also alle Spalten außer der neuen PK-Spalte. Und diese kannst Du als SERIAL definieren, der Rest geht dann vollautomatisch.

Andreas
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

rneumann
Neuer Benutzer
Beiträge: 3
Registriert: Di 24. Nov 2009, 16:52

Beitrag von rneumann »

Ha, die Antwort ist manchmal so einfach :)
Und da sag ich noch wer lesen kann ist klar im Vorteil.
Der Hinweis die Columns anzugenben war Gold richtig. Ich hatte das neue Feld schon als serial definiert hatte aber vergessen/bzw. nicht richtig gelesen die Column Namen anzugeben.

Tausend dank

Gruss :D

Antworten