Définir la variable d'environnement DB2CODEPAGE pour DB2

Vous vous connectez à une base DB2, mais l'affichage de données dans votre client n'est pas bon (caractères manquants ou illisibles) ? Il est peut-être nécessaire de positionne la variable d’environnement DB2CODEPAGE (page de codes de base de données) sur la machine exécutant le client DB2. Dans un premier temps, nous allons déterminer la valeur de DB2CODEPAGE en exécutant la réquete ci-dessous directement dans la base DB2 :
SELECT CODEPAGE FROM SYSCAT.DATATYPES WHERE TYPENAME = 'VARCHAR'
select codepage Notez le résultat, par exemple 1208. Ensuite, sur la machine exécutant le client DB2, il est temps de définit notre variable d'environnement : Sous windows, 3 clics et le tour est joué : definit variable envrionnement dans windows ajouter DB2CODEPAGE pour DB2 dans windows   Sous Linux, il faut exporter la variable d'environnement via la commande export : export DB2CODEPAGE=1208 Enfin, pour SAS, ajouter le même export dans le fichier sasenv_local du répertorie <SAHOME>/SASFoundation/9.x/bin/  

Problèmes connus lié à un mauvaise CODEPAGE

Lorsque vous utilisez l'interface SAS / ACCESS sur DB2 pour vous connecter à DB2, vous pouvez rencontrer ces problèmes:
  • Les données et certains caractères spéciaux peuvent ne pas s'afficher correctement.
  • Certains caractères spéciaux peuvent être affichés comme points d'interrogation.
  • Vous pourriez recevoir cet avertissement:
WARNING: During read: [IBM][CLI Driver] CLI0002W Data truncated. SQLSTATE=01004.
Comme vous vous en doutez, ce message d'erreur s'affiche car l'encodage DB2 sur le serveur DB2 ne correspond pas au codage DB2 sur le client. source : http://support.sas.com/kb/55/490.html 

Nicolas Housset

Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.