Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

PostgreSQL transfert de données d'une table a une table fille

3 réponses
Avatar
Etienne
Salut

J'ai commis une petite boulette lors de l'import de données dans ma base
de données..

j'ai créer une table contact
CREATE contact (
"idcontact" serial,
...
);

de cette table hérite plusieurs tables
entre autre la table member
CREATE member (
...
) INHERITS (contact);


j'ai importer des membres dans la table contact...

Comment puis-je les déplacer dans la table member à présent sachant
qu'il m'est impossible de les supprimer pour les ré-inserer...

La seule solution qu'il me vient a l'esprit serait de backuper la base
modifier dans l'archive et restaurer. Mais bon si je pouvais éviter d'en
arriver là...

Merci
Etienne

3 réponses

Avatar
Yliur
Le Wed, 06 Oct 2010 11:35:22 +0200
Etienne a écrit :

Salut

J'ai commis une petite boulette lors de l'import de données dans ma
base de données..

j'ai créer une table contact
CREATE contact (
"idcontact" serial,
...
);

de cette table hérite plusieurs tables
entre autre la table member
CREATE member (
...
) INHERITS (contact);


j'ai importer des membres dans la table contact...

Comment puis-je les déplacer dans la table member à présent sachant
qu'il m'est impossible de les supprimer pour les ré-inserer...



Je ne comprends pas bien la contrainte. Il faut les déplacer sans les
supprimer-réinsérer ?

Est-ce que toutes les lignes insérées dans contact sont à déplacer vers
member ?

Est-ce qu'aucune information n'a été perdue lors de l'insertion dans
contact (qui peut contenir moins d'informations que member) ?

Est-ce qu'un simple INSERT INTO member SELECT ... FROM contact ne
ferait pas l'affaire ?


La seule solution qu'il me vient a l'esprit serait de backuper la
base modifier dans l'archive et restaurer. Mais bon si je pouvais
éviter d'en arriver là...

Merci
Etienne
Avatar
Etienne
Le 06/10/2010 22:25, Yliur a écrit :
Je ne comprends pas bien la contrainte. Il faut les déplacer sans les
supprimer-réinsérer ?



Oui afin de me pas perdre la valeur du serial de l'objet pere.

Est-ce que toutes les lignes insérées dans contact sont à déplacer vers
member ?



Oui.
Il existe bien d'autres données dans d'autre table filles, mais tout ce
que j'ai mis dans contact doit aller dans member.

Est-ce qu'aucune information n'a été perdue lors de l'insertion dans
contact (qui peut contenir moins d'informations que member) ?



non rien du tout.

Est-ce qu'un simple INSERT INTO member SELECT ... FROM contact ne
ferait pas l'affaire ?



Et bien non car cela créerai de nouveau ID.
Et là c'est pas bon.

Mais bon. Apres avoir cherché toute la journée d'hier j'ai attaqué ma
solution a base de modification de l'archive...
Manipuler un fichier de 3 Go avec Vi c'est un peu du sport, mais ca n'a
finalement pas été trop compliqué.

J'ai juste fusionner les COPY contact avec le COPY member
j'ai du un peu modifier des champs mais finalement ca a été assez simple...

Ceci dit, il serait Intéressant d'implémenter une telle fonction dans
postgreSQL.
Ca peut rééllement être utile et pas seulement en cas d'erreur.

Etienne
Merci.
Avatar
Yliur
> Est-ce qu'un simple INSERT INTO member SELECT ... FROM contact ne
> ferait pas l'affaire ?

Et bien non car cela créerai de nouveau ID.
Et là c'est pas bon.



Hum... Pourquoi est-ce que ça donnerait un nouvel id ? Est-ce lié à
l'héritage (que je ne connais pas bien) ?

Par défaut si on spécifie une valeur pour la colonne id elle est
utilisée plutôt qu'une nouvelle issue de la série.