Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels 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 11/11/2007, 18h11   #1
Invité régulier
 
Inscription : octobre 2007
Messages : 19
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 19
Points : 6
Points : 6
Par défaut Problème de format d'import de fichier texte

Bonjour,

J'ai un fichier texte avec le code_personne et le nom_personne qui se rpésente sous la forme suivante :
"00001";"DUPONT"
"00002";"DURANT"

Je ne peux pas changer la structure de ce fihcier texte (il ne dépend pas de moi).
J'aimerai importer ce fichier dans une table POSTGRE (code char(5), nom varchar(50)) avec l'instruction COPY.
Si j'arrive à spécifier le ";" comme delimiteur, je n'arrive pas à lui spécifier que le texte est encadré par des guillemets doubles.
Conséquence : à l'importation, le code du premier client est égal à "0000 au lieu de 00001.
Quelq'un peut-il m'aider ? Y-a-t-il un commande spécifique en postgre équivalente au "enclosed" de Mysql ?
Merci.
jsteffe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2007, 22h39   #2
Membre habitué
 
Inscription : août 2007
Messages : 128
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 128
Points : 146
Points : 146
Avec COPY, c'est à mon avis impossible. 2 solutions :
  1. tu modifies ton schéma pour ne pas utiliser char(5) (text serait le mieux)
  2. tu utilises pgloader (je ne suis pas sûr qu'il soit capable de faire ça mais c'est le plus à même de le faire.
gleu_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 16h46   #3
Invité régulier
 
Inscription : octobre 2007
Messages : 19
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 19
Points : 6
Points : 6
Merci pour la réponse.
Toutefois, la solution 1 n'est pas possible car si je passe mon champ en format TEXT, il va importer le code client "00001" (au lieu de 00001). Je n'aurais donc pas les bonnes données en import.
Quant à pg_loader, je vais essayer ...
jsteffe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 00h23   #4
Membre habitué
 
Inscription : août 2007
Messages : 128
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 128
Points : 146
Points : 146
Pour le guillemet double en début et en fin, il suffit d'un UPDATE pour corriger cela. À priori, qqc comme cela :

Code :
UPDATE ta_table SET ton_champ=trim(BOTH '"' FROM ton_champ);
gleu_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 12h40   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 26
Points : 12
Points : 12
La solution de changer le format de mes champs ne me plait guère.
J'ai donc creusé une autre piste qui fonctionne.
Je passe les fichiers texte en CSV car l'instruction COPY FROM avec l'option CSV traite automatiquement les guillemets doubles, ce qui résoud mon problème.

Merci tout de même pour les indications fournies.
jeromesteffe est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h55.


 
 
 
 
Partenaires

Hébergement Web