Vous n'êtes pas identifié(e).
Pages : 1
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
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
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
Un outil comme vim devrait certainement vous afficher ce caractère supplémentaire.
Guillaume.
Hors ligne
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
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.
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
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
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
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
Pages : 1