Tabelle in anderes Schema kopieren?

Hallo Forum,

bin noch Newbie was PostgreSQL betrifft und habe folgendes Problem. Ich habe in einer Datenbank ein zweites Schema angelegt. Nun möchte ich eine Tabelle aus Schema A nach Schema B kopieren. Als Frontend nutze ich pgadminIII.

Ich habe zunächst in Schema B die Tabelle neu erstellt und dabei die Tabellenstruktur von der Ursprungstabelle vererbt. Wenn ich dann aber mit dem Copy-Befehl die eigentlichen Daten in einen File schreibe und anschließend wieder einlese, tauchen diese Daten in der ursprungstabelle doppelt auf. Statt 1400 Datensätze habe ich nun 2800.

Dieses seltsame Verhalten muss mit der Vererbung zusammenhängen, denn wenn ich die Tabelle in Schema B manuell erstelle (also ohne Vererbung) klappt das Einlesen mit dem Copy-Befehl einwandfrei. Leider muss ich noch mehr Tabellen kopieren. Das manuelle Erstellen der Tabellen kann’s also nicht sein.

Mit einem SQL-Dump komme ich auch nicht wirklich weiter. In diesem Dump wird ja immer Bezug auf Schema A genommen.

Es muss doch eine Möglichkeit geben, sowohl die Tabellenstruktur, als auch die Daten in ein zweites Schema zu kopieren, ohne irgendwelche Vererbungsbeziehungen zu erzeugen. :confused: Wäre für einen hilfreichen Rat sehr dankbar.

Viele Grüße
jonas

PS: Die Postgres-DB ist auf einem entfernten Windows2000-Server installiert. Als Tools habe ich lediglich pgAdmin (auch unter Windows2000) zur Verfügung.

Frontend spielt keine Rolle, das geht mit native SQL:

test=# create schema foo1;
CREATE SCHEMA
Time: 145.242 ms
test=*# create schema foo2;
CREATE SCHEMA
Time: 0.986 ms
test=*# create table foo1.bla (id int, val text);
CREATE TABLE
Time: 361.225 ms
test=*# insert into foo1.bla (id, val) values (1, 'so geht das');
INSERT 0 1
Time: 2.236 ms
test=*# create table foo2.bla as select * from foo1.bla;
SELECT
Time: 65.294 ms
test=*# select * from foo2.bla;
 id |     val
----+-------------
  1 | so geht das
(1 row)

Andreas

Hallo Andreas,

vielen Dank für die Hilfe. Funktioniert bestens :slight_smile: . Eine Frage habe ich dennoch: In der Ursprungstabelle ist ein Primärschlüssel vorhanden. Ist es möglich, diesen gleichzeitig mit den eigentlichen Daten in die kopierte Tabelle zu übernehmen oder muss man ihn manuell erzeugen?

Grüße
Jonas