#1 Tue 27 September 2011 10:40
[MAJIC3] Problème de codage de caractères NBAT
Bonjour à tous,
J'essaie d'extraire les données du fichier MAJIC "NBAT" et de les intégrer dans mon SGBD (PostGreSQL 9.1).
La requête SQL suivante fonctionne pour les millésimes MAJIC jusqu'en 2008:
---------------------------------------------------
CREATE TABLE majic2.nonbati_tmp
(tmp character varying (150))
WITH (OIDS=FALSE);
ALTER TABLE majic2.nonbati_tmp OWNER TO postgres;
SET client_encoding TO 'WIN1252';
COPY majic2.nonbati_tmp FROM 'c:/INPUT/NBAT/NBAT' DELIMITERS '|' QUOTE '@' CSV HEADER;
---------------------------------------------------
Par contre, à partir du millésime 2009, cette requête ne fonctionne plus.
Je reçois le message d'erreur suivant:
---------------------------------------------------
ERREUR: séquence d'octets invalide pour l'encodage « WIN1252 » : 0x00
CONTEXT: COPY nonbati_tmp, ligne 1
********** Erreur **********
État SQL :22021
Contexte : COPY nonbati_tmp, ligne 1
---------------------------------------------------
Le problème viendrait donc du codage de caractères dans le fichier MAJIC "NBAT".
(C'est pourquoi je poste ce message dans le forum "données" et non pas dans "Geo'BD")
J'ai essayé d'ouvrir ce fichier avec le logiciel text "gedit", mais il n'a pas été capable de détecter le codage de caractères.
Pourtant, il arrive à ouvrir le fichier NBAT version 2008 et tous les fichiers s'ouvrent dans Bloc-notes de Windows.
Voici donc un extrait des 3 premières lignes du fichier MAJIC "NBAT" version 2008
(que j'ai anonymisé pour ce forum en remplaçant le code commune par "######") :
---------------------------------------------------
###### A0002 10000000985AL0015429111991 0 11 00039B0394101
###### A0002 21000000985L00154 00000000000000000000A13S 0
###### A0002 ŸŸ36 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000
---------------------------------------------------
et voici un extrait des 3 premières lignes du fichier MAJIC "NBAT" version 2010 :
---------------------------------------------------
###### A0002 10000000985AL0015429111991 0 11 00039B0394101 41011120351022 03003010CI6A
###### A0002 21000000985L00154 00000000000000000000A13S 0
###### A0002 ŸŸ36 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000000000000
---------------------------------------------------
Je voulais donc savoir ce qui a changé entre 2008 et 2009 au niveau du format du fichier NBAT et s'il existe une solution à ce problème de format.
Un grand merci par avance pour vos réponses,
Hors ligne
#2 Tue 27 September 2011 11:07
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3199
- Site web
Re: [MAJIC3] Problème de codage de caractères NBAT
Bonjour,
IL s'agit d'un problème d'encodage de caractères.
Le WIN1252 correspond à l'encodage par défaut de windows avec le paramètre régional "french", si votre BD est encodée en Latin9 ou unicode ou UTF-8 cela ne va pas marcher.
Mettez votre BD en Latin1 (win1252) et cela devrait fonctionner. (bon là je suis pas trop sur), pour ma part j'utilise un flux unicode pour lire les fichiers MAJIC et cela fonctionne, par contre je ne fait pas l'introduction de données directement dans Postgis, d'où mon incertitude.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#3 Thu 29 September 2011 10:20
Re: [MAJIC3] Problème de codage de caractères NBAT
[PROBLEME RESOLU]
Bonjour,
et un très grand merci pour votre réponse.
En effet, la base de données était encodée en UTF-8 avec le paramètre régional "french" et j'avais essayé de forcer l'intégration des données avec un encodage WIN1252 (SET client_encoding TO 'WIN1252'), ce qui a généré l'erreur.
Il n'est pas possible de changer ce paramètre pour une base de données existante, alors j'ai crée une nouvelle base en WIN1252 avec le même paramètre régional "french", et l'intégration des données fonctionne parfaitement.
Pour les utilisateurs de PostGre confrontés à ce problème, voici la requête pour la création de cette nouvelle base de données:
---------------------------------------------------
CREATE DATABASE majic
WITH OWNER = postgres
ENCODING = 'WIN1252'
TABLESPACE = pg_default
TEMPLATE = template0
LC_COLLATE = 'French_France.1252'
LC_CTYPE = 'French_France.1252'
CONNECTION LIMIT = -1;
---------------------------------------------------
Encore merci,
Bien cordialement
Hors ligne
#4 Thu 29 September 2011 14:10
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3199
- Site web
Re: [MAJIC3] Problème de codage de caractères NBAT
Merci du retour
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne