Accueil du site > Les articles > Passer un fichier avec délimiteurs de l’IFS vers DB2 en 4 étapes.
Version à imprimer Enregistrer au format PDF

Passer un fichier avec délimiteurs de l’IFS vers DB2 en 4 étapes.

lundi 2 octobre 2006, par David Malle Visites  3051

Comment passer facilement d’un fichier texte avec délimiteurs de l’IFS vers un fichier DB2 ? Une solution en 4 étapes, que vous pouvez automatiser.


Principes de l’exemple.

Exemple du fichier texte réceptionné (fichier.txt) :

code1;libellé correspondant au code1
code2;libellé correspondant au code2
code3;libellé correspondant au code3

Structure du fichier DB2 d’arrivée (fichier FICHIER dans la bibliothèque BIB) :

code sur 18 alpha
libellé sur 30 alpha

Règles adoptées :
- Le caractère séparateur est le ;
- Les fichier texte se trouve dans l’IFS sous /home/repertoire/

4 étapes.

1ère étape : Création d’un fichier stream dans QTEMP pour réceptionner les données de l’IFS.

Le fichier doit avoir au minimum une longueur cumulée du maximum des zones attendues plus un caractères séparateur entre chacune des zones. Dans notre exemple (18 + 30 + 1 pour le séparateur = 49). Elle peut être supérieure.

CRTPF FILE(QTEMP/FICHIER)
RCDLEN(49)

2nde étape : Copie du contenu du fichier texte de l’IFS vers le fichier que l’on vient de créer.

Si le fichier stream a un code page 850, indiquez *PCASCII pour le paramètre STMFCODPAG, sinon, indiquez *STMF.

CPYFRMSTMF FROMSTMF('/home/repertoire/fichier.txt')
TOMBR('/QSYS.LIB/QTEMP.LIB/FICHIER.FILE/FICHIER.MBR')
MBROPT(*ADD)
STMFCODPAG(*PCASCII)

3ème étape : Copie des données du fichier STREAM vers le fichier au format DB2.

Indiquez la même longueur que celle utilisée pour créer le PF.

CPYFRMIMPF
FROMFILE(QTEMP/FICHIER)
TOFILE(BIB/FICHIER)
STMFLEN(49)            
FROMCCSID(*FILE)    
RCDDLM(*ALL)
STRDLM(*NONE)
FLDDLM(';')
RPLNULLVAL(*FLDDFT)      

4ème étape : supression du fichier stream de QTEMP.

DLTF FILE(QTEMP/FICHIER)

Note : ce fonctionnement est compatible avec l’évolution de la commande CPYFRMIMPF en v5r3.