Bonjour à tous,
Une base de données a été créée afin de partager des infos sur un serveur postgresql. Afin d'en simplifier l'exploitation (et de parer aux demandes en attendant d'avoir un interfaçage), nous avons installé des connecteurs ODBC sur les différents postes et un accès par Access. (là n'est pas le débat, svp...)
Nous rencontrons beaucoup d'erreurs du type "La connection ODBC a échoué" depuis Access sans plus d'information.
A force de chercher, j'ai fini par comprendre: il s’agirait d'encodage de caractères au niveau des tables faisant office de dictionnaires de données.
Les dictionnaires de données sont fournis et imposés au niveau national. Nous les récupérons au format csv/WIN1252, les convertissons et intégrons en dbf/UTF-8.
Sauf que lorsque je tente une extraction sur psql, j'ai le message suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part \copy (select * from bd_eauxdouces.ds_parametre ) TO 'd:\parametres.csv' CSVEn fouillant encore un peu plus (par colonne et par lots d'identifiants... ouais, c'est un peu....ERREUR: le caractère dont la séquence d'octets est 0xce 0xbb dans l'encodage "UTF-8" n'a pas d'équivalent dans l'encodage "WIN1252") et en corrigeant à la main, j'arrive à faire sauter certaines erreurs... Et d'autres apparaissent quand je fais un export global d'une table.
Je suis prête à me fader un script de requêtes pour tester et corriger tous les champs de toutes les tables nécessaires.
Sauf que je ne sais pas comment lui dire de me remplacer le caractère 0xbb par " ? ou de me trouver tous les enregistrements avec cede 0xce ?
Bref comment débusquer les caractères hexadécimaux ? Je cherche quelque chose du genre:
Ai-je un moyen de me prévaloir de ces erreurs afin de ne plus avoir d'échec ODBC?
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * from bd_eauxdouces.ds_parametre where position(lblongparametre, '\xbb') <> 0 ;
Partager