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 :

Importer des données excel dans mes tables Postgres


Sujet :

PostgreSQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Points : 38
    Points
    38
    Par défaut Importer des données excel dans mes tables Postgres
    Bonjour,

    je suis débutant en Postgres, je cherche à remplir ma base avec des données contenues dans différents fichiers excel.
    J'ai trouvé un ou deux sujets similaires sur le site mais je n'ai pas réussi à aller au bout de la procédure.
    J'ai commencé par transformé mon fichier excel en un fichier "csv", puis j'ai essayé d'importer les données dans mes tables en utilisant la fonction "COPY", mais impossible d’exécuter cette commande correctement.

    Si quelqu'un pouvait me donner un exemple

    J'aurai une autre question, j'ai crée ma base (enfin les différentes tables, je n'ai encore rien rempli) et je voulais savoir comment vous faisiez pour remplir vos tables avec vos données excel dans mon cas : dans chacun de mes fichiers excel j'ai des données qui appartiennnent à différentes tables, je n'ai pas un fichier pour une table (je ne suis pas sur d'être très clair ).
    Donc ma question est : dois-je modifier chacun de mes fichiers plusieurs fois pour garder uniquement les colonnes de données relatives à une table ? et ainsi de suite jusqu'a avoir tout rempli ?

    A la base je pensais utiliser un "simple" scrypt python mais je n'ai pas trouvé d'exemple sur internet.

    Je travail simplement via le terminal, je n'utilise pas pgAdmin.



    Merci à vous

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Citation Envoyé par Thomas77380 Voir le message
    Bonjour,

    J'aurai une autre question, j'ai crée ma base (enfin les différentes tables, je n'ai encore rien rempli) et je voulais savoir comment vous faisiez pour remplir vos tables avec vos données excel dans mon cas : dans chacun de mes fichiers excel j'ai des données qui appartiennnent à différentes tables, je n'ai pas un fichier pour une table (je ne suis pas sur d'être très clair ).
    Donc ma question est : dois-je modifier chacun de mes fichiers plusieurs fois pour garder uniquement les colonnes de données relatives à une table ? et ainsi de suite jusqu'a avoir tout rempli ?
    Bonjour,

    Deux solutions ici :
    - faire un fichier CSV par table.
    - insérez vos données actuelle dans des tables sas (donc vous ne toucher pas vos fichier CVS) et ensuite traitement de ces tables sas pour injecter les données dans vos tables cibles

    Concernant le COPY, je n'ia jamasi utilisé mais y a de la doc + exemple ici : http://www.postgresql.org/docs/9.1/static/sql-copy.html

    Faites des tests avec des exemples simple au début..

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Bonjour, merci pour votre réponse,

    je m'étais en effet aidé de votre lien pour me servir de la fonction "COPY", voici l'instruction que je tape :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    COPY gene FROM 'Bureau/Basededonnees/genes.csv' | STDIN ;
    j'ai également essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COPY gene FROM {'genes.csv' | STDIN }
    je tente donc d'insérer dans ma table "gène" les données contenues dans le fichier genes.csv, cependant cette instruction semble être incorrecte, surement une erreur de syntaxe que je ne trouve pas.

    Voici l'erreur :

    ERROR: syntax error at or near "{"
    LINE 1: COPY gene FROM {'genes.csv' | STDIN }

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    n'utilisez pas "{".

    Quel est le message d'erreur de la 1ere commande ?
    M'est d'avis que votre path est mal écrit (il manque soit un / soit c:\..)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    EN effet j'ai ajouté un '/' au début de mon path, cependant j'obtiens toujours un message d'erreur :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COPY gene FROM '/Bureau/Basededonnees/genes.csv' | STDIN;


    ERROR: syntax error at or near "|"
    j'ai tenté d'enlever ce caractère mais rien n'y fait.

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 476
    Points : 831
    Points
    831
    Par défaut
    et tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COPY gene FROM '/Bureau/Basededonnees/genes.csv'
    si le caractere de separation est une tabulation
    si le caractere est bien une virgule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COPY gene FROM '/Bureau/Basededonnees/genes.csv' with csv
    on peut rajouter header si le fichier d'origine a les entêtes de colonne

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    merci pour votre réponse, je n'ai plus de message d'erreur, mais le remplissage ne se fait pas.

    Je dispose d'un fichier excel sans entête avec une seule colonne (une succession de numéros). Je pense que ma requête ne colle pas avec l'architecture de mon fichier.

    J'ai testé ceci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COPY chromosome FROM '/Bureau/Basededonnees/test_edit.csv'
    le fichier en question contient donc une seule colonne sans entête.

    Auriez vous une idée de pourquoi les informations ne sont pas transmises ? (lorsque je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select* from chromosome;
    je vois que ma table est vide :/ )

    merci à vous

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Pour ma part dans mon install Windows (XP, postgres-9.1) cette commande
    COPY chromosome FROM '/Bureau/Basededonnees/test_edit.csv'
    ne passera pas, d'une part parce que le bureau ne se trouve pas dans un répertoire /Bureau à la racine du disque, et d'autre part parce même en mettant le bon chemin, le processus postgres n'a pas le droit de lire dedans. Mais ça produit un message d'erreur dans tous les cas.

    En revanche ça passera sous cette forme là, avec le \copy de psql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \copy chromosome from 'c:/Documents and Settings/daniel/Bureau/Basededonnees/test_edit.csv'

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    ça fonctionne merci

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 156
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    En essayant d'importer mes données d'un fichier CSV à une base de données qui contient une table de 23 champs correspondant aux nombres de mes colonnes du tableau CSV, J'ai eu cette Erreur qui s'affiche dans la console shell (psql):
    ERREUR: syntaxe en entrée invalide pour l'entier :<Code du département>

    Contexte: COPY election, ligne1, colonne code_departement:<Code du département>

    J'avais mis le code_departement de la table du type Integer.

    Comment faire svp??

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Quand la ligne 1 contient des noms de colonnes et pas des données, ce qui est manifestement le cas ici au vu de l'erreur, il faut préciser CSV HEADER dans la commande \copy ou COPY.

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

Discussions similaires

  1. [AC-2010] Importer des données excel dans une table access
    Par docjo dans le forum VBA Access
    Réponses: 0
    Dernier message: 06/06/2014, 21h33
  2. Importer des données Excel dans une table Access
    Par Flaguette dans le forum Modélisation
    Réponses: 3
    Dernier message: 25/09/2008, 22h50
  3. Réponses: 5
    Dernier message: 20/06/2007, 15h11
  4. Import de Données Excel dans une Table Access
    Par YLF dans le forum Access
    Réponses: 2
    Dernier message: 20/02/2006, 20h02
  5. Insérer des données Excel dans une table ACCESS
    Par anikeh dans le forum Access
    Réponses: 4
    Dernier message: 21/12/2005, 23h42

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