Wir verwenden den Befehl copy, um Daten einer Tabelle in eine Datei außerhalb der Datenbank zu kopieren.
Ist es möglich, Daten einer Tabelle mit einem Befehl in eine andere Tabelle zu kopieren?
Wenn ja, kann jemand bitte die Anfrage teilen.
Oder gibt es einen besseren Ansatz, wie wir pg_dump oder ähnliches verwenden können?
sql
postgresql
Mohitd23
quelle
quelle
insert into other (col1, col2) select col1, col2 from one
Antworten:
Das ist nicht einfach, aber es ist auch nicht nötig.
CREATE TABLE mycopy AS SELECT * FROM mytable;
oder
CREATE TABLE mycopy (LIKE mytable INCLUDING ALL); INSERT INTO mycopy SELECT * FROM mytable;
Wenn Sie nur einige Spalten auswählen oder neu anordnen müssen, können Sie dies tun:
INSERT INTO mycopy(colA, colB) SELECT col1, col2 FROM mytable;
Sie können auch einen selektiven pg_dump durchführen und nur die Zieltabelle wiederherstellen.
quelle
INSERT INTO mycopy SELECT * FROM mytable
Ansatz versuche, den ich erhalteERROR: column "order" is of type integer but expression is of type text LINE 2: SELECT * FROM django_apps.about_post
Um klar zu sein,order
ist eine Ganzzahl in beiden Tabellen.\d
Ausgabe vonpsql
in beiden TabellenINSERT INTO mycopy (a, b) SELECT * FROM mytable
, aber ich bin hierher gekommen, um zu versuchen, eine Alternative dazu zu finden. Meine Tabellen haben alle die gleichen Spalten, nur in einer anderen Reihenfolge. Es stellt sich heraus, dass es nicht möglich ist. stackoverflow.com/questions/1267427/…Wenn die Spalten in beiden Tabellen identisch sind (Namen und Datentypen), können Sie Folgendes verwenden
INSERT INTO receivingtable (SELECT * FROM sourcetable WHERE column1='parameter' AND column2='anotherparameter');
quelle
Angenommen, es gibt bereits eine Tabelle, und Sie möchten alle Datensätze aus dieser Tabelle in eine andere Tabelle kopieren, die derzeit nicht in der Datenbank vorhanden ist. Die folgende Abfrage erledigt diese Aufgabe für Sie:
SELECT * into public."NewTable" FROM public."ExistingTable";
quelle
select ... into
Syntax zugunsten der Standardkonformität veraltet istcreate table ... as select ...