2010-07-13 41 views
7

Tengo un par de archivos CSV que quiero cargar en mi base de datos, pero el archivo CSV contiene muchas más columnas que en mi base de datos. ¿Cómo importo solo columnas seleccionadas del archivo CSV a mi base de datos?MySQL importar datos CSV - ignorar algunas columnas csv

Por razones de argumento, digamos que el CSV contiene una fila de encabezado con los títulos de las columnas de la A a la Z. Luego, dos millones de filas con valores para las columnas de la A a la Z. Digamos que mi tabla myTest contiene B, N y S, Solo quiero importar la columna B, N y S del archivo CSV a myTest.

que estaba planeando hacer:

mysqlimport --local --columns=B,N,S --ignore-lines=1 --delete --default-character-set=latin1 --fields-optionally-enclosed-by=\" --fields-terminated-by=\, --lines-terminated-by=\r\n myDb myTest.csv 

Pero que llena la fila B, N y S con los valores de la columna A, B y C, no con los valores de la columna B, N y S como I querido.

¿Alguna sugerencia de cómo puedo hacer que importe solo B, N y S?

Respuesta

14

Debe modificar el --columns=B,N,S y agregar parámetros para omitir todas las columnas que no necesita.

Por ejemplo, con el fin de utilizar primero, cuarto y séptimo utilización columna:

--columns=B,@x,@x,N,@x,@x,S 

Esto enviará el 2º, 3º, 5º y 6º de la columna al parámetro @x.

Ref: http://dev.mysql.com/doc/refman/5.1/en/mysqlimport.html

+0

Muchas gracias, que hizo el truco! Había estado leyendo ese enlace toda la mañana, pero no había pensado en hacerlo de esta manera :-) – niklassaers