Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL carrega valores NULL de dados CSV


Isso vai fazer o que você quer. Ele lê o quarto campo em uma variável local e, em seguida, define o valor real do campo como NULL, se a variável local acabar contendo uma string vazia:
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,'')
;

Se todos eles estiverem possivelmente vazios, você lerá todos eles em variáveis ​​e terá várias instruções SET, assim:
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,'')
;