|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2008 Messages : 101 ![]() |
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 |
|
|
00
|
|
|
#2 | |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 2 158 ![]() |
Citation:
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.. |
|
|
|
00
|
|
|
#3 | |||
|
Futur Membre du Club
![]() Tulate Leke Inscription : janvier 2010 Messages : 53 ![]() |
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 :
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:
|
|||
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 2 158 ![]() |
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:\..) |
|
|
00
|
|
|
#5 | |
|
Futur Membre du Club
![]() Tulate Leke Inscription : janvier 2010 Messages : 53 ![]() |
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:
|
|
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Inscription : janvier 2006 Messages : 232 ![]() |
et tout simplement
Code :
COPY gene FROM '/Bureau/Basededonnees/genes.csv' si le caractere est bien une virgule Code :
COPY gene FROM '/Bureau/Basededonnees/genes.csv' WITH csv |
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Tulate Leke Inscription : janvier 2010 Messages : 53 ![]() |
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' Auriez vous une idée de pourquoi les informations ne sont pas transmises ? (lorsque je fais je vois que ma table est vide :/ ) merci à vous |
|
|
00
|
|
|
#8 | |
![]() ![]() Inscription : octobre 2008 Messages : 1 702 ![]() |
Pour ma part dans mon install Windows (XP, postgres-9.1) cette commande
Citation:
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' |
|
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Tulate Leke Inscription : janvier 2010 Messages : 53 ![]() |
ça fonctionne merci
|
|
|
00
|
|
|
#10 |
|
Membre à l'essai
![]() Étudiant Inscription : juin 2012 Messages : 116 ![]() |
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?? |
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : octobre 2008 Messages : 1 702 ![]() |
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.
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com