Bonjour,
merci pour la réponse
Envoyé par
IFA2377
1. Reconstituer un fichier d’items de 50 caractères à loader dans une table d’un seul champ char(50).
c'est justement ce que mon patron m'a conseillé de faire, mais j'ai trouvé mieux
Envoyé par
IFA2377
Ces fichiers ne seraient-ils pas issus du monde micro ? Si c’est le cas, il doit être possible de recréer des fichiers constitués d’items de 50 caractères. Le transfert par FTP n’a peut-être pas été réalisé comme il aurait fallu. Sur AIX, la commande « d2x » permet de transformer un fichier « DOS » en fichier « Unix ». Il doit y avoir un problème LF/CR-LF.
en fait c'est des fichiers copiés à partir de sauvegardes sur bande magnétique, je suis sur un projet de mise en place d'un serveur d'archivage et on s'occupe de récupérer ces données afin de pouvoir les stocker sur une base Informix
Envoyé par
IFA2377
2. Exécuter une commande SQL sur cette table pour unloder un fichier avec des séparateurs « pipe ».
c'est justement mon but et c'est pour cette raison que je cherche à créer un UNL
Envoyé par
IFA2377
Il est aussi possible de traiter d’abord ces fichiers en format « texte » sur PC tout simplement avec Excel.
a. Ouvrir le fichier « texte » et déterminer la largeur des colonnes
b. Ajout d’une colonne « pipe » après chaque colonne
c. Affecter aux cellules de la colonne « numérique » char(12) le format numérique avec deux décimales
d. Sauvegarde en « .txt »
e. Transfert vers l’AIX
f. Traitement du champ date, etc.
en fait c'est comme qu'on fais actuellement au boulot, mais là j'ai des fichiers annuels qui font dans les 200Mo et le traitement avec Excel est vraiment pénible si ce n'est quasiment infaisable car ça fait planté le PC.
En réalité depuis la dernière fois j'ai trouvé une solution d'abord le découpage de la ligne par 50 caracteres avec "dd"
dd cbs=50 ibs=50 obs=50 if=fichier_a_traiter ofs=fichier_decoupe conv=unblock
et c'est plutot rapide, il traite un fichier avec un peu moins d'une minute !
Ensuite la transformation de fichier_decoupe en fichier.unl :
là j'ai utilisé awk avec sa sous-fonction "substr" pour inserer les pipes en rajoutant une conversion de type, il me manque encore le traitement des lignes erronées
awk -f trans_unl.awk fichier_decoupe > fichier.unl
Voilà dès que j'aurai complété mon shell "awk" je pourrais charger ma table avec un "load" ou "dbload"
Merci pour tout IFA2377
Partager