Ergebnis 1 bis 4 von 4

Thema: Daten aus einer Tabelle in eine andere kopieren

  1. #1
    Turmaline ist offline Neuer Benutzer
    Registriert seit
    26.02.2007
    Beiträge
    20

    Standard Daten aus einer Tabelle in eine andere kopieren

    Hallo Zusammen,

    ich bin in der PostgreSQL-Welt ganz neu.

    ich habe folgende Frage: wie ich eine Tabelle aus der DB1 in die DB2 kopieren kann?

    so habe ich versucht zu machen:
    1) sql-code der Tabelle1 aus der DB1 kopiert und in der DB2 im sql-Editor eingefügt -> identische Tabelle angelegt, die allerdingst ganz leer ist.

    2) mein Versuch die Daten zu kopieren:
    - Rechtsklick auf der Tabelle1 (DB1) -> Backup -> PLAIN (Nur Daten) -> tb1.sql (gespeichert)
    - DB2 -> sql-Editor -> Datei öffnen -> tb1.sql

    ....
    COPY tabelle1 (attr1, attr2) FROM stdin;
    DE111 245 407
    ....

    -> ausführen
    und da tritt ein Fehler auf und zeigt auf die erste Zeile mit Daten:
    "syntax error"

    und da ich micht mit der syntax nicht auskenne kann ich auch nicht verstehen woran der Fehler liegt.


  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Turmaline Beitrag anzeigen
    Hallo Zusammen,

    ich bin in der PostgreSQL-Welt ganz neu.

    ich habe folgende Frage: wie ich eine Tabelle aus der DB1 in die DB2 kopieren kann?

    so habe ich versucht zu machen:
    1) sql-code der Tabelle1 aus der DB1 kopiert und in der DB2 im sql-Editor eingefügt -> identische Tabelle angelegt, die allerdingst ganz leer ist.

    2) mein Versuch die Daten zu kopieren:
    - Rechtsklick auf der Tabelle1 (DB1) -> Backup -> PLAIN (Nur Daten) -> tb1.sql (gespeichert)
    - DB2 -> sql-Editor -> Datei öffnen -> tb1.sql

    ....
    COPY tabelle1 (attr1, attr2) FROM stdin;
    DE111 245 407
    ....

    -> ausführen
    und da tritt ein Fehler auf und zeigt auf die erste Zeile mit Daten:
    "syntax error"

    und da ich micht mit der syntax nicht auskenne kann ich auch nicht verstehen woran der Fehler liegt.

    Eine genauere Wiedergabe des Fehler wäre hilfreich gewesen.

    Was Du in der GUI wie getippt hast, kann ich mangels GUI und Erfahrung damit nicht nachvollziehen, aber wenn es nur darum geht, eine Tabelle aus DB1 nach DB2 zu tragen geht das auf der Kommandozeile sehr simpel:

    Code:
    kretschmer@pegasus:~$ createdb foo1
    CREATE DATABASE
    kretschmer@pegasus:~$ createdb foo2
    CREATE DATABASE
    kretschmer@pegasus:~$ echo "create table bla(id int); insert into bla values (1);" | psql foo1;
    CREATE TABLE
    INSERT 0 1
    kretschmer@pegasus:~$ pg_dump -t bla foo1 | psql foo2
    Die ersten 3 Befehle sind dabei nur der Kram, zwei DBs zu erzeugen und in die erste der beiden eine Tabelle mit Daten reinzuwerfen. Das eigentlich kopieren ist im letzten Befehl. Es dump einfach nur die Tabelle aus der einen DB und pipt das in ein psql rein, welches mit der 2. DB verbunden ist. Das unktioniert so auch z.B. über Rechnergrenzen hinweg.


    Btw.: hat es einen tieferen Sinn, daß Du 2 DBs hast? Nicht, daß ich Dir das ausreden will, aber oft kommt man mit Schemas besser. Unterschiedliche DBs sind eine recht massive Trennung der Daten, oft will man das nicht so hart, oft hätten Schemas gereicht.


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    Turmaline ist offline Neuer Benutzer
    Registriert seit
    26.02.2007
    Beiträge
    20

    Standard

    Hallo,

    danke!
    ich hab anscheinend nicht genug Rechte, um diese Operation ausführen zu können. "Permission de nied".

    soweit ich das verstehe, löscht dieser Befehl die Tabelle aus der DB1 nicht, die Tabelle wird nur kopiert? Muss schon eine Tabelle in der DB2 mit dem gleichen Schema angelegt werden? (Aus Deinem Beispiel habe ich so verstanden, dass nicht oder?)

    Die Sache mit zwei Db hab nicht ich ausgedacht, die zweite Db ist die Testdatenbank, um die Funktionen zunächst dort testen zu können.
    Also jetzt muss ich eine plpgsql-Funktion testen, dafür brauche ich ein Paar Tabellen aus der eigentlichen Datenbank, wo die zu kopierende Tabelle unberührt bleiben müssen.

  4. #4
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Turmaline Beitrag anzeigen

    soweit ich das verstehe, löscht dieser Befehl die Tabelle aus der DB1 nicht, die Tabelle wird nur kopiert? Muss schon eine Tabelle in der DB2 mit dem gleichen Schema angelegt werden?
    Ja, nein. Nein.

    Die Sache mit zwei Db hab nicht ich ausgedacht, die zweite Db ist die Testdatenbank, um die Funktionen zunächst dort testen zu können.
    Also jetzt muss ich eine plpgsql-Funktion testen, dafür brauche ich ein Paar Tabellen aus der eigentlichen Datenbank, wo die zu kopierende Tabelle unberührt bleiben müssen.
    Da würde ich einfach mit Schemas arbeiten. Deutlich schmerzfreier.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 17.06.2011, 14:15
  2. Antworten: 4
    Letzter Beitrag: 01.03.2011, 12:05
  3. Antworten: 8
    Letzter Beitrag: 13.06.2008, 08:28
  4. Antworten: 4
    Letzter Beitrag: 05.10.2007, 12:17
  5. Mit einer Funktion in eine Tabelle schreiben
    Von columbus im Forum PL/pgSQL
    Antworten: 11
    Letzter Beitrag: 23.02.2006, 16:32

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum