PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 22/03/2013 10:55:24

patrik
Membre

Problème d'importation de fichier .txt dans Pg

Bonjour,

Je suis débute dans le développement sur PgSQL mais je suis familier au développment sur MySQL. Lorsque j'importe des données sur fichier .txt (et même .csv) dans mes tables, je constate que, systématiquement, une caractère non imprimable est inséré au début de la première ligne. Ce qui a pour conséquence de fausser mes requêtes lorque celles-ci s'appliquent à cette ligne.

le code d'importation est le suivant:

COPY test from 'C:/test.txt' DELIMITER ';'

Les données sont les suivantes (telles qu'elles apparaissent sur le fichier test.txt):

20003;DUPONT                        ;BERNARD         ;FRAIS       ;364880
20004;MARCEL                        ;ROY                 ;FRAIS       ;319612
20005;RIVIERE                       ;MARTIN            ;FRAIS       ;407335

L'importation se passe bien, mais si j'éxecute le code suivant:

LENGTH(NumID),NumID FROM test;

j'obtiens:

6 20003
5 20004
5 20005

La structure de la table est la suivante:

CREATE TABLE test
(
  numid character varying(10) NOT NULL,
  name character varying(35) NOT NULL,
  surname character varying(35),
  item character varying(35) NOT NULL,
  amount character varying(12)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE test
  OWNER TO postgres;

Je souhaiterais corriger cette erreur. Vos lumières sont les bienvenues.

Merci!

Hors ligne

#2 22/03/2013 12:59:41

gleu
Administrateur

Re : Problème d'importation de fichier .txt dans Pg

Faites la requête suivante :

SELECT '>'||numid||'<' FROM test;

Cela vous permettra de savoir si vous avez un caractère invisible avant ou après le mot.


Guillaume.

Hors ligne

#3 09/04/2013 09:14:55

patrik
Membre

Re : Problème d'importation de fichier .txt dans Pg

Bonjour,

désolé du retard de réponse. Mais j'ai dû faire une pause sur ce projet. En effet, il y a un caractère qui s'incruste avant le mot lorsque j'importe les données dans la table. J'ai fait plusieurs essais avec divers fichiers texte, mais le résultat demeure le même. J'ignore la cause et de ce fait, je ne vois pas comment résoudre ce problème. Merci d'avance.

Hors ligne

#4 09/04/2013 14:27:35

gleu
Administrateur

Re : Problème d'importation de fichier .txt dans Pg

Un outil comme vim devrait certainement vous afficher ce caractère supplémentaire.


Guillaume.

Hors ligne

#5 10/04/2013 00:22:40

meles
Membre

Re : Problème d'importation de fichier .txt dans Pg

Bonsoir,
  j'ai déjà eu ce genre de chose. Pb d'encodage du fichier par rapport à pg il me semble.

UTF8 avec BOM, ou un truc dans ce genre.

C'est par la que je commencerai à chercher en tous cas.

Cordialement

Hors ligne

#6 12/04/2013 14:57:52

patrik
Membre

Re : Problème d'importation de fichier .txt dans Pg

gleu a écrit :

Faites la requête suivante :

SELECT '>'||numid||'<' FROM test;

Cela vous permettra de savoir si vous avez un caractère invisible avant ou après le mot.

Ce code ne donne rien malheureusement, par contre en faisant

select substr(NumID from 1 for 1) from test

j'ai une sorte de point ou de petit tiret (-) qui apparait à la première ligne seulement tandis que les autres lignes affichent le premier caractère imprimable de ma table test. Je pourrais faire un update mais cela ne résoud pas vraiment le problème.

meles a écrit :

Bonsoir,
  j'ai déjà eu ce genre de chose. Pb d'encodage du fichier par rapport à pg il me semble.

UTF8 avec BOM, ou un truc dans ce genre.

C'est par la que je commencerai à chercher en tous cas.

Cordialement

La base de données postgres utilise l'encodage UTF8. Si le fichier à importé n'a pas le même encodage, PG ne l'importe pas. A moins que j'ai mal compris ta suggestion, je ne suis pas sûr que le problème vienne de là.

Ce problème est pour le moins assez dérangeant car si les données ne peuvent être enregistrées avec fiabilité, je doute de l'efficacité des requêtes que je pourrais faire ensuite. Je suis fort tenté de retourner sur MySQL (pour si peu pourtant). Je reste ouvert pour toute autre solution à ce problème.

Merci à tous de votre sollicitude.

Hors ligne

#7 12/04/2013 22:40:57

meles
Membre

Re : Problème d'importation de fichier .txt dans Pg

patrik a écrit :

La base de données postgres utilise l'encodage UTF8. Si le fichier à importé n'a pas le même encodage, PG ne l'importe pas. A moins que j'ai mal compris ta suggestion, je ne suis pas sûr que le problème vienne de là.

Pourtant, je travaille a moitié sous win et linux et ça a été une bonne source de nuits blanches.
T'es sous quel OS ?

@+

Hors ligne

#8 13/04/2013 03:05:50

gleu
Administrateur

Re : Problème d'importation de fichier .txt dans Pg

Ce dont voulait parler meles, c'est que certains fichiers UTF8 comportent en premier caractère un caractère indiquant qu'il s'agit d'UTF8. pgAdmin ajoute ce caractère par exemple alors que psql ne le respectait pas jusqu'à peu. Il est possible que ce soit ça.


Guillaume.

Hors ligne

#9 13/04/2013 13:04:49

meles
Membre

Re : Problème d'importation de fichier .txt dans Pg

Le fameux BOM (BYTE ORDER MARK). J'ai essayé de reproduire avec une 9.2 sous linux, sans succès.

C'est donc peut être aussi lié à la version de pg. Un peu plus de renseignment ne serait pas inutile. OS, version de PG, etc...

Cordialement

Hors ligne

Pied de page des forums