una tabla leer importar guardar datos como archivo abrir mysql csv load-data-infile

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''


De los documentos de Mysql:

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);