Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Débuter
Débuter Forum d'entraide : Débuter en base de données avec PostgreSQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/12/2011, 11h07   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2008
Messages : 101
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 101
Points : 14
Points : 14
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
Thomas77380 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 11h40   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 649
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 649
Points : 2 647
Points : 2 647
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..
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 13h59   #3
Futur Membre du Club
 
Tulate Leke
Inscription : janvier 2010
Messages : 53
Détails du profil
Informations personnelles :
Nom : Tulate Leke

Informations forums :
Inscription : janvier 2010
Messages : 53
Points : 15
Points : 15
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 :
1
2
 
COPY gene FROM 'Bureau/Basededonnees/genes.csv' | STDIN ;
j'ai également essayé

Code :
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 :
Citation:

ERROR: syntax error at or near "{"
LINE 1: COPY gene FROM {'genes.csv' | STDIN }
tom77380 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 14h24   #4
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 649
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 649
Points : 2 647
Points : 2 647
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:\..)
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 16h40   #5
Futur Membre du Club
 
Tulate Leke
Inscription : janvier 2010
Messages : 53
Détails du profil
Informations personnelles :
Nom : Tulate Leke

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



Code :
COPY gene FROM '/Bureau/Basededonnees/genes.csv' | STDIN;


Citation:
ERROR: syntax error at or near "|"
j'ai tenté d'enlever ce caractère mais rien n'y fait.
tom77380 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 17h27   #6
Membre confirmé
 
Homme
Inscription : janvier 2006
Messages : 227
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations forums :
Inscription : janvier 2006
Messages : 227
Points : 239
Points : 239
et tout simplement
Code :
COPY gene FROM '/Bureau/Basededonnees/genes.csv'
si le caractere de separation est une tabulation
si le caractere est bien une virgule
Code :
COPY gene FROM '/Bureau/Basededonnees/genes.csv' WITH csv
on peut rajouter header si le fichier d'origine a les entêtes de colonne
xavier-Pierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 19h14   #7
Futur Membre du Club
 
Tulate Leke
Inscription : janvier 2010
Messages : 53
Détails du profil
Informations personnelles :
Nom : Tulate Leke

Informations forums :
Inscription : janvier 2010
Messages : 53
Points : 15
Points : 15
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 :
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 :
SELECT* FROM chromosome;
je vois que ma table est vide :/ )

merci à vous
tom77380 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 17h01   #8
Modérateur
 
Inscription : octobre 2008
Messages : 1 508
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 508
Points : 2 040
Points : 2 040
Pour ma part dans mon install Windows (XP, postgres-9.1) cette commande
Citation:
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 :
\copy chromosome FROM 'c:/Documents and Settings/daniel/Bureau/Basededonnees/test_edit.csv'
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 20h01   #9
Futur Membre du Club
 
Tulate Leke
Inscription : janvier 2010
Messages : 53
Détails du profil
Informations personnelles :
Nom : Tulate Leke

Informations forums :
Inscription : janvier 2010
Messages : 53
Points : 15
Points : 15
ça fonctionne merci
tom77380 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h23.


 
 
 
 
Partenaires

Hébergement Web