Bonjour,

Je dois charger un fichier dans une table externe dont voici le script :

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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
CREATE TABLE "NEO405CY"."WK_EMAIL" (
(...)
	"SCORE4" NUMBER(6,0), 
	"SCORE5" NUMBER(6,0), 
	"NBTICVTE" NUMBER(3,0), 
	"CODRELAI" VARCHAR2(5 BYTE), 
	"CODMAG" VARCHAR2(3 BYTE), 
	"CODMAG1" VARCHAR2(3 BYTE), 
	"NBDEMCAT" NUMBER(2,0), 
	"CLTFIL" NUMBER(2,0), 
	"TSURPLUS" VARCHAR2(1 BYTE)
) ORGANIZATION EXTERNAL (
  TYPE ORACLE_LOADER
  DEFAULT DIRECTORY "DIR_EMAIL"
  ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE
    CHARACTERSET 'WE8MSWIN1252'
    STRING SIZES ARE IN CHARACTERS
    BADFILE DIR_EMAIL_BAD:'email_20090525_180956.bad'
    LOGFILE DIR_EMAIL_LOG:'email_20090525_180956.log'
    DISCARDFILE DIR_EMAIL_DSC:'email_20090525_180956.dsc'
    FIELDS
    LRTRIM
    (
(...)
SCORE4 POSITION(778:783) NULLIF SCORE4=BLANKS,
SCORE5 POSITION(784:789) NULLIF SCORE5=BLANKS,
NBTICVTE POSITION(790:792) NULLIF NBTICVTE=BLANKS,
CODRELAI POSITION(793:797) NULLIF CODRELAI=BLANKS,
CODMAG POSITION(798:800) NULLIF CODMAG=BLANKS,
CODMAG1 POSITION(801:803) NULLIF CODMAG1=BLANKS,
NBDEMCAT POSITION(804:805) NULLIF NBDEMCAT=BLANKS,
CLTFIL POSITION(806:807) NULLIF CLTFIL=BLANKS,
TSURPLUS POSITION(808:808) NULLIF TSURPLUS=BLANKS
    )
  )
  LOCATION ('NEO.EMAIL.SOC4X.DU250509.164200.TXT.trunc')
)
REJECT LIMIT UNLIMITED;
Je souhaite que les espaces ou les blancs soient considérés comme NULL.
Donc j'ai rajouté NULLIF <CHAMPS>=BLANKS.

Ce qui est bizarre, c'est quand je regroupe les valeurs d'un champ (par exemple CODROLG), j'obtiens des valeurs NULL, des espaces et les codes qui vont bien.

Il ne devrait pas avoir d'espace.
J'ai aussi ajouté LRTRIM dans les paramètres, le résultat est le même.
J'ai essayé MISSING FIELDS VALUES ARE NULL mais cela ne marche qu'avec des tables externes qui utilise des délimiteurs et non du positionnement.

Merci d'avance pour votre aide