Bonjour,

j'essaye de construite un fichier de controle sous oracle 10g permettant l'intégration dans la base de données venant d'un fichier texte. Le fichier texte est de la forme:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
00000000000000010000000000000002S
00000000000000010000000000000003S
00000000000000010000000000000004N
00000000000000040000000000000005S
00000000000000060000000000000007S
Ce fichier contient à chaque ligne deux nombres de 16 chiffres et une lettre qui est soit S soit N.

Ce que j'aimerai faire, c'est vun fichier de controle qui vérifie que le caractère en position 33 (le dernier donc) est soit un S, soit un N (qui ne prenne pas d'autre valeur et qu'il ne soit pas null).

J'ai fait un fichier de controle qui vérifie que le 33 ieme caractère est bien un S ou un N. Le problème c'est que pour moi, c'est vraiment de la bidouille (déjà, dire que mon cod_eta_ded était sur deux caractères était obligatoire pour moi, car sinon il ignoré la fin de la ligne, et donc me chargeait la ligne alors qu'elle ne devait pas être chargé).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
OPTIONS (DIRECT = TRUE)
LOAD DATA
BADFILE '$HOME/log/import_foyer.bad'
DISCARDFILE '$HOME/log/import_foyer.dis'
APPEND
 
INTO TABLE i14_foyer_input
when ((33:33) = 'S')
(
ID_CLIENT position (1:16),
ID_CLIENT_LIEN position (17:32),
COD_ETA_DED position (33:34)
)
 
INTO TABLE i14_foyer_input
when ((33:33) = 'N')
(
ID_CLIENT position (1:16),
ID_CLIENT_LIEN position (17:32),
COD_ETA_DED position (33:34)
)
Y-a-t-il moyen de faire des choses plus élégantes (et qui pourrait fonctionné si j'ai plus de valeur un jour, on ne sait jamais) sans modifier les contraintes sur la table?