PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 13/02/2017 14:49:47

databaser
Membre

Ajout d'une colonne à un endroit précis

Bonjour,


Une recherche sur internet ne donnant rien, savez-vous s'il est possible d'ajouter une colonne à un endroit précis sans avoir à recréer une nouvelle table ?
Merci
il y aurait la possibilité d'utiliser AFTER mais ça ne marche pas avec PGS

ALTER TABLE nom_de_la_table ADD nom_de_la_colonne type_de_donnée AFTER nom_de_la_colonne ;

Hors ligne

#2 13/02/2017 14:53:50

ruizsebastien
Membre

Re : Ajout d'une colonne à un endroit précis

Bonjour,

à ma connaissance, non, il faut recréer la table.


Cordialement,

Sébastien.

Hors ligne

#3 13/02/2017 16:29:34

Marc Cousin
Membre

Re : Ajout d'une colonne à un endroit précis

Non, il n'y a pas


Marc.

Hors ligne

#4 18/02/2017 15:59:50

genamiga
Membre

Re : Ajout d'une colonne à un endroit précis

Bonjour,


Tu ajoute ta colonne et ensuite avec EMS SQL Manager for PostgreSQL, même la version gratuite, il est possible de changer l'ordre des colonnes.


Mais ta table ne doit pas être référencée par des clés étrangères. Si c'est le cas, il faut supprimer ces références, changer l'ordre des colonnes et recréer les références.

Dernière modification par genamiga (18/02/2017 16:00:15)

Hors ligne

#5 18/02/2017 16:36:53

gleu
Administrateur

Re : Ajout d'une colonne à un endroit précis

Qu'on soit bien clair, PostgreSQL ne permet pas de changer l'ordre des colonnes. Donc, SQL Manager fait certainement une bidouille pour y arriver. Du genre, renommage de la table, création de la nouvelle table avec la nouvelle colonne au bon endroit, et transfère des données de l'ancienne table vers la nouvelle. Autant cela peut certainement aider dans certains cas, autant dans d'autres, cela risque d'être inacceptable : si la table est très volumineuse, ou si elle est fréquemment accédée, cela sera un gros soucis. Tout ça pour un intérêt nul (dans le sens, zéro).


Guillaume.

Hors ligne

#6 20/02/2017 10:01:40

Arkhena
Membre

Re : Ajout d'une colonne à un endroit précis

Bonjour,

La doc postgreSQL propose de créer un vue avec l'ordre des colonnes que vous souhaitez ou de recréer la table.
https://wiki.postgresql.org/wiki/Alter_column_position

Cordialement,

Arkhena

Hors ligne

#7 25/02/2017 16:04:06

genamiga
Membre

Re : Ajout d'une colonne à un endroit précis

Je ne sais pas comment fait SQL Manager mais c'est quasi instantané...

Ceci dit, je suis d'accord avec gleu, l'intérêt est en effet nul, si ce n'est d'avoir l'ordre des colonnes que l'on veut dans le but de clarté...c'est purement cosmétique.

Hors ligne

#8 25/02/2017 16:16:15

rjuju
Administrateur

Re : Ajout d'une colonne à un endroit précis

C'est quasi instantané y compris sur des tables de plusieurs dizaines/centaines de Go ?  Sinon, si vous voulez savoir comment fait l'outil, configurez postgres pour tracer toutes les requêtes.

Hors ligne

#9 26/02/2017 00:08:23

databaser
Membre

Re : Ajout d'une colonne à un endroit précis

Bonjour rjuju,

"configurez postgres pour tracer toutes les requêtes" => on fait ça comment ?
Est-ce que cela peut servir à tracer notre travail sur la BDD que l'on a ? Le script SQL peut servir à ça, mais il n'est pas suffisant - par ex, il n'intègre pas le résultat d'une requête, etc.
Merci...

Hors ligne

#10 26/02/2017 09:47:45

gleu
Administrateur

Re : Ajout d'une colonne à un endroit précis

Il faut suffit de configurer le paramètre log_min_duration_statement à 0 pour cela. Suivant l'activité de votre serveur, cela peut n'avoir aucune conséquence comme cela peut générer énormément d'écritures dans les traces. Donc à faire avec prudence.


Guillaume.

Hors ligne

#11 26/02/2017 11:46:47

rjuju
Administrateur

Re : Ajout d'une colonne à un endroit précis

Est-ce que cela peut servir à tracer notre travail sur la BDD que l'on a ? Le script SQL peut servir à ça, mais il n'est pas suffisant - par ex, il n'intègre pas le résultat d'une requête, etc.

Quel est votre besoin exactement ?

Hors ligne

#12 26/02/2017 13:24:04

databaser
Membre

Re : Ajout d'une colonne à un endroit précis

garder une mémoire des traitements que je fais sur les données dans PGS car il faut parfois revenir sur des traitements anciens et il m'est impossible de retrouver ce que j'ai fait, les résultats, les difficultés, etc.
Le point de départ sont les métadonnées, ça j'ai compris, mais après ?

Dernière modification par databaser (26/02/2017 13:25:29)

Hors ligne

Pied de page des forums