IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Copie de données d'une table sur une autre


Sujet :

PostgreSQL

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2023
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2023
    Messages : 17
    Par défaut Copie de données d'une table sur une autre
    Bonjour,

    je cherche à copier les données d'une de mes tables sur une autre, mais je rencontre le message d'erreurs suivant :

    ERROR: la colonne « quant_inc » est de type real mais l'expression est de type character varying
    LINE 2: SELECT *
    ^
    HINT: Vous devez réécrire l'expression ou lui appliquer une transformation de type.

    ERREUR: la colonne « quant_inc » est de type real mais l'expression est de type character varying
    SQL state: 42804
    Character: 38
    Pourtant mes deux tables ont les mêmes champs et avec types identiques.
    voici la requête utilisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO base_eau.incident
    SELECT *
    FROM base_eau_test.incident_sur_troncon_final
    Quelqu'un aurait une idée de comment résoudre ce message d'erreur ?

    MERCI de votre assistance.
    Très cordialement.

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 427
    Par défaut
    Bonjour,
    Pour faire simple: OUBLIES LE SELECT * !
    Ici on ne sait pas trop quelle colonne de la table source est affectée à la table cible.
    Or si tu spécifies les colonnes tant dans la clause INSERT que dans la clause SELECT, plus d'ambiguïté, on sait précisément quelle valeur va dans quelle colonne.

    Tatayo.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2023
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2023
    Messages : 17
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    En faisant cela, tout a bien fonctionné :

    code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO base_eau.incident (
        gid, fonction, type_inc, detection, support, quant_inc , quant_unit, quant_obs, annee , livraison, observat, source , geom , insee, reparation, date_int_sig
    )
    SELECT 
         gid, fonction, type_inc, detection, support, quant_inc , quant_unit, quant_obs, annee , livraison, observat, source , geom , insee, reparation, date_int_sig
     
    FROM base_eau_test.incident_sur_troncon_final
    Merci et très bon après-midi.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 599
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Bonjour,
    Pour faire simple: OUBLIES LE SELECT * !
    Ici on ne sait pas trop quelle colonne de la table source est affectée à la table cible.
    Or si tu spécifies les colonnes tant dans la clause INSERT que dans la clause SELECT, plus d'ambiguïté, on sait précisément quelle valeur va dans quelle colonne.

    Tatayo.
    Tout à fait et également, si de nouvelles colonnes sont ajoutées dans la table ou, mais c'est plus rare, l'ordre des colonnes est modifié, alors la requête insert ne fonctionnera plus.

    J'ai écrit un billet de blog expliquant pourquoi il ne faut quasiment jamais utiliser SELECT *, il est ICI

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copie de colonnes dans une autre table
    Par Gaetgaet78 dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/01/2011, 09h03
  2. Copie de donnés d'une base DB2 vers MYSQL
    Par the watcher dans le forum JDBC
    Réponses: 6
    Dernier message: 20/09/2010, 17h56
  3. Réponses: 2
    Dernier message: 09/08/2010, 18h30
  4. Réponses: 4
    Dernier message: 28/05/2010, 17h11
  5. Réponses: 6
    Dernier message: 12/02/2008, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo