leer - ¿Cómo saltarse columnas en un archivo CSV al importar a la tabla MySQL usando LOAD DATA INFILE?
importar datos de excel a una tabla de mysql (4)
@ deemi :
La única forma de ignorar el @dummy
es establecer el Predeterminado del campo en AUTO INCREMENT
. Entonces puede saltear el campo y simplemente codificar de esta manera,
LOAD DATA INFILE ''file.txt''
INTO TABLE t1 (column2, column3, column4, column5);
// asume que column1
está establecido en AUTO INCREMENT
por defecto.
Tengo un archivo CSV con 11 columnas y tengo una tabla MySQL con 9 columnas.
El archivo CSV se ve así:
col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11
y la tabla MySQL se ve así:
col1, col2, col3, col4, col5, col6, col7, col8, col9
Necesito asignar las columnas 1-8 del archivo CSV directamente a las primeras 8 columnas de la tabla MySQL. Luego, debo omitir las dos columnas siguientes en el archivo CSV y luego asignar la columna 11 del archivo CSV a la columna 9 de la tabla MySQL.
Por el momento estoy usando el siguiente comando SQL:
LOAD DATA LOCAL INFILE ''filename.csv'' INTO TABLE my_table
FIELDS TERMINATED BY '',''
ENCLOSED BY ''''
LINES TERMINATED BY ''/n''
Pero el código anterior asigna las 9 primeras columnas del archivo CSV a las 9 columnas en la tabla MySQL.
Creo que hay un cambio más en el código:
El siguiente comando SQL:
LOAD DATA LOCAL INFILE ''filename.csv'' INTO TABLE my_table
FIELDS TERMINATED BY '',''
ENCLOSED BY ''''
LINES TERMINATED BY ''/n''
-probablemente resultará en un error de truncamiento de datos.
Entonces, es mejor usar LINES TERMINATED BY ''/r/n''
lugar de LINES TERMINATED BY ''/n''
ASÍ el código será:
LOAD DATA LOCAL INFILE ''filename.csv'' INTO TABLE my_table
FIELDS TERMINATED BY '',''
ENCLOSED BY ''''
LINES TERMINATED BY ''/r/n''
También puede descartar un valor de entrada asignándolo a una variable de usuario y no asignando la variable a una columna de tabla:
LOAD DATA INFILE ''file.txt''
INTO TABLE t1 (column1, @dummy, column2, @dummy, column3);
step1.deal con awk.
cat file.txt |awk ''{print $1,$2,$5...}''>new_file.txt
step2.load en mysql.
load data local infile ''new_file'' into table t1(...)
el método a continuación es simple, pero no está permitido en la versión inferior de mysql.
LOAD DATA INFILE ''file.txt''
INTO TABLE t1 (column1, @dummy, column2, @dummy, column3);