Accueil du site > Les articles > Nettoyage d’un fichier par SQL.
Version à imprimer Enregistrer au format PDF

Nettoyage d’un fichier par SQL.

mercredi 11 août 2004, par Grégory Jarrige Visites  1706 Première mise en ligne le lundi 3 novembre 2003.

Merci à Laurence Romby pour ce tuyau fort astucieux.


Problème et solution.

Problème  : vous importez un fichier sur votre AS/400 (fichier d’origine Windows ou Unix) et certains champs de votre fichier cible se retrouvent avec des caractères non reconnus par l’AS/400. Les enregistrements concernés deviennent alors inexploitables et font planter les programmes qui tentent d’y accéder.

 

Solution : Nettoyer le fichier par SQL

 

Exemple : Supposons un fichier contenant un caractère non standard dans la zone VLSPTV en position 16. Valeur hexa du caractère incorrect : « 04 » (le meilleur moyen de repérer le code erroné et sa valeur hexa est un DSPPFM).

Pour le nettoyage sous SQL, on extrait les parties de la zone correcte et on les concatène en prenant soin d’ajouter un blanc à la place du caractère incorrect.

update vls010p set vlsptv = substr( VLSPTV , 1 , 15 ) !! ’ ’ !!
substr( VLSPTV , 17 , 32 ) where substr( VLSPTV , 16 , 1 )= X’04’

P.-S.

Evidemment ça fonctionne quand le caractère incorrect est toujours sur la même position, dans le cas contraire, il faudrait passer par un programme, mais c’est une autre histoire (d’ailleurs, si quelqu’un a envie de l’écrire...).