Saltar al contenido

MySQL carga valores NULL de datos CSV

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *