Detta kommer att göra vad du vill. Den läser in det fjärde fältet till en lokal variabel och ställer sedan in det faktiska fältvärdet till NULL, om den lokala variabeln kommer att innehålla en tom sträng:
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,'')
;
Om de alla möjligen är tomma, skulle du läsa in dem alla i variabler och ha flera SET-satser, så här:
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,'')
;