Tengo un archivo que puede contener de 3 a 4 columnas de valores numéricos que están separados por comas. Los campos vacíos se definen con la excepción cuando están al final de la fila:
1,2,3,4,5
1,2,3,,5
1,2,3
La siguiente tabla fue creada en MySQL:
+ ------- + -------- + ------ + ----- + --------- + ------- + El | Campo | Tipo | Nulo | Clave | Predeterminado | Extra | + ------- + -------- + ------ + ----- + --------- + ------- + El | uno | int (1) | SI | El | NULL | El | El | dos | int (1) | SI | El | NULL | El | El | tres | int (1) | SI | El | NULL | El | El | cuatro | int (1) | SI | El | NULL | El | El | cinco | int (1) | SI | El | NULL | El | + ------- + -------- + ------ + ----- + --------- + ------- +
Estoy tratando de cargar los datos usando el comando MySQL LOAD:
LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS
TERMINATED BY "," LINES TERMINATED BY "\n";
La tabla resultante:
+ ------ + ------ + ------- + ------ + ------ + El | uno | dos | tres | cuatro | cinco | + ------ + ------ + ------- + ------ + ------ + El | 1 | 2 | 3 | 4 | 5 | El | 1 | 2 | 3 | 0 | 5 | El | 1 | 2 | 3 | NULL | NULL | + ------ + ------ + ------- + ------ + ------ +
El problema radica en el hecho de que cuando un campo está vacío en los datos sin procesar y no está definido, MySQL por alguna razón no usa el valor predeterminado de las columnas (que es NULL) y usa cero. NULL se usa correctamente cuando falta el campo por completo.
Desafortunadamente, tengo que poder distinguir entre NULL y 0 en esta etapa para que cualquier ayuda sea apreciada.
Gracias S.
editar
La salida de SHOW WARNINGS:
+ --------- + ------ + -------------------------------- ------------------------ + El | Nivel | Código | Mensaje | + --------- + ------ + -------------------------------- ------------------------ + El | Advertencia | 1366 Valor entero incorrecto: '' para la columna 'cuatro' en la fila 2 | El | Advertencia | 1261 La fila 3 no contiene datos para todas las columnas | El | Advertencia | 1261 La fila 3 no contiene datos para todas las columnas | + --------- + ------ + -------------------------------- ------------------------ +
LOAD DATA
. Consulte la sección de ejemplos d6tstack SQL sobre cambios en el esquema de datos.