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 :

Importation d'un fichier csv avec la commande copy avec des clés étrangères [9.0]


Sujet :

PostgreSQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Importation d'un fichier csv avec la commande copy avec des clés étrangères
    Bonjour,

    Je souhaite importer un fichier au format csv dans postgresql.

    Si je mets directement les clés étrangères dans le fichier csv, je n'ai pas de soucis.

    COPY taxons (nom_taxon, cle_devis_taxon, cle_espece_taxon ) FROM 'C:/chemin/vers/le/fichier/nom_fic.csv' ;

    Par contre si je mets le nom des champs (comme les utilisateurs me le demandent car c'est plus parlant pour eux) et que je fais un select dessus, ça ne fonctionne plus:
    COPY taxons (nom_taxon, (select id_devis from devis where numero_devis ='numero_devis'), (select id_espece from especes where nom_espece ='nom_espece' ;) FROM FROM 'C:/chemin/vers/le/fichier/nom_fic.csv' ;

    J'aimerai savoir si on peut importer un fichier de cette manière avec la commande COPY, ou s'il existe d'autre solutions?

    Je ne peux pas désactiver les contraintes d'intégrité dans la base car la plupart des données seront importées avec des fichiers csv, et pas seulement les données initiales.

    Je ne sais pas si je suis très claire?

    Merci beaucoup.

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Un COPY pour l'import brut du CSV vers une table temporaire, puis un transfert avec les select pour les clés étrangères pour insérer dans la vraie table

    Sinon un COPY vers une table import brut au format CSV juste pour la forme et un trigger qui redirige vers la bonne table avec les select pour les clés étrangères



    Au final, la "vitesse d'import globale" (du CSV à la table finale) sera beaucoup plus importante que le COPY pile au bon format.
    A toi de voir s'il n'est pas plus intéressant de générer un CSV avec les bonnes clés puis de faire un COPY (surtout si les jointures pour les clés étrangères sont faites sur des "données statiques" de paramétrage)

    ps:

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Importation d'un fichier csv avec la commande copy avec des clés étrangères
    Bonjour,

    Merci beaucoup pour cette réponse. Je pense effectivement que je vais choisir la deuxième solution, et ne plus m'acharner sur cette malheureuse commande copy.

    Bon we.

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

Discussions similaires

  1. [phpMyAdmin] import d'un fichier csv avec phpMyAdmin
    Par nabil123456 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 11/03/2015, 10h45
  2. [2008R2] Importation d'un fichier csv avec un nombre de colonnes variable
    Par wonderboutin123 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 10/03/2015, 12h47
  3. [PostgreSQL] Importation d'un fichier .csv avec création de table
    Par dor_boucle dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/05/2013, 10h50
  4. Réponses: 3
    Dernier message: 04/10/2010, 11h32
  5. Réponses: 1
    Dernier message: 29/04/2008, 12h54

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