sql >> Base de Datos >  >> RDS >> Mysql

MySQL carga valores NULL de datos CSV

Esto hará lo que quieras. Lee el cuarto campo en una variable local y luego establece el valor del campo real en NULL, si la variable local termina conteniendo una cadena vacía:

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 es posible que todos estén vacíos, entonces los leería todos en variables y tendría varias declaraciones SET, como esta:

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