Ten en cuenta que en las ciencias cualquier problema casi siempere puede tener diversas resoluciones, pero nosotros enseñamos la mejor y más óptimo.
Solución:
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 un campo vacío. string:
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 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,'')
;
El manual de mysql dice:
Al leer datos con LOAD DATA INFILE, las columnas vacías o faltantes se actualizan con ”. Si desea un valor NULL en una columna, debe usar N en el archivo de datos. La palabra literal “NULL” también se puede utilizar en algunas circunstancias.
Por lo tanto, debe reemplazar los espacios en blanco con N de esta manera:
1,2,3,4,5
1,2,3,N,5
1,2,3
El comportamiento es diferente según la configuración de la base de datos. En el modo estricto, esto arrojaría un error o una advertencia. La siguiente consulta se puede utilizar para identificar la configuración de la base de datos.
mysql> show variables like 'sql_mode';
Te mostramos las reseñas y valoraciones de los usuarios
Si guardas alguna desconfianza o capacidad de renovar nuestro artículo eres capaz de añadir una explicación y con deseo lo observaremos.