web-dev-qa-db-fra.com

Comment copier des données d'une table à une autre dans postgres en utilisant la commande copy

Nous utilisons la commande copy pour copier les données d’une table dans un fichier hors base de données.

Est-il possible de copier les données d'une table dans une autre table en utilisant la commande.

Si oui quelqu'un peut-il partager la requête?.

Ou existe-t-il une meilleure approche, telle que l’utilisation de pg_dump?.

Apprécier ton aide.

Cordialement, Mohit

48
Mohitd23

Vous ne pouvez pas facilement le faire, mais il n’est pas nécessaire de le faire.

CREATE TABLE mycopy AS
SELECT * FROM mytable;

ou

CREATE TABLE mycopy (LIKE mytable INCLUDING ALL);

INSERT INTO mycopy
SELECT * FROM mytable;

Si vous devez sélectionner uniquement certaines colonnes ou les réorganiser, vous pouvez procéder comme suit:

INSERT INTO mycopy(colA, colB)
SELECT col1, col2 FROM mytable;

Vous pouvez également faire un pg_dump sélectif et restaurer uniquement la table cible.

107
Craig Ringer

Supposons qu'il existe déjà une table et que vous souhaitez copier tous les enregistrements de cette table dans une autre table qui n'est pas présente dans la base de données. La requête suivante effectuera cette tâche pour vous:

SELECT * into public."NewTable" FROM public."ExistingTable";
1
Manish Jain