Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL lädt NULL-Werte aus CSV-Daten

Dies wird tun, was Sie wollen. Es liest das vierte Feld in eine lokale Variable und setzt dann den tatsächlichen Feldwert auf NULL, wenn die lokale Variable am Ende einen leeren String enthält:

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,'')
;

Wenn sie möglicherweise alle leer sind, dann würden Sie sie alle in Variablen einlesen und mehrere SET-Anweisungen haben, etwa so:

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,'')
;