Cela fera ce que vous voulez. Il lit le quatrième champ dans une variable locale, puis définit la valeur réelle du champ sur NULL, si la variable locale finit par contenir une chaîne vide :
LOAD DATA INFILE '/tmp/testdata.txt'
INTO TABLE moo
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\n"
(one, two, three, @vfour, five)
SET four = NULLIF(@vfour,'')
;
Si elles sont peut-être toutes vides, alors vous les liriez toutes dans des variables et auriez plusieurs instructions SET, comme ceci :
LOAD DATA INFILE '/tmp/testdata.txt'
INTO TABLE moo
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\n"
(@vone, @vtwo, @vthree, @vfour, @vfive)
SET
one = NULLIF(@vone,''),
two = NULLIF(@vtwo,''),
three = NULLIF(@vthree,''),
four = NULLIF(@vfour,'')
;