Tags: csv
Problemas de importación de los campos de fecha de Excel
By admin on Jun 11, 2009 | In Aprendiz | Send feedback »
Yo quería importar los siguientes datos de una hoja de cálculo en mi tabla de base de datos
Code:
orderid customerid orderdate city | |
800 15 15/02/09 London | |
801 22 22/02/09 Glasgow | |
802 15 20/03/09 London | |
803 24 21/03/09 Aberdeen | |
804 76 13/04/09 Grimsby |
Después de guardar la hoja de cálculo en formato CSV (delimitado por comas) fue mi primer intento de utilizar la sintaxis del comando "LOAD DATA".
Code:
LOAD DATA INFILE 'C:\\ordertest.csv' INTO TABLE testorders | |
LINES terminated BY '\n'; |
Había leído que esto rara vez funciona, así no me sorprendió encontrar problemas en los datos insertados (aunque por lo menos hizo algunos intentos de poblar la tabla desde el archivo).
Por lo tanto, decidí utilizar el mecanismo de IMPORT en phpMyAdmin, después de la primera selección de la tabla necesario. Una opción útil es especificar aquí el número de registros para saltar desde el comienzo del archivo - esto me permitió pasar el registro cabecera (nombres de campo) de que no desea importar. Sin embargo las opciones por defecto me falle. El "FIELDS TERMINATED BY" caja tiene un defecto de ";" cuando lo necesitamos ",". De todos modos, después de corregir esto mediante la introducción de la coma, estaba en condiciones de importar los registros. Sin embargo todavía había un problema - la fecha de todas las columnas mostró 00/00/00. Esto se debe a que MySQL usa el formato de una fecha diferente a Microsoft Excel. Cómo encontrar la solución a esto? Volví a la hoja Excel y cambiar el formato del campo a la fecha yyyy-mm-dd (formato de ingles, es aaaa-mm-dd en espanol?) antes de guardar como un archivo CSV (delimitado por comas) y pasar por el proceso de nuevo. Al final he podido importar los datos que yo quería.
Otras soluciones podrían haber incluyó el uso de OpenOffice para crear la hoja de cálculo y csv, usando ODBC preguntas en Mysql, usando Navicat, php o utilizando un programa para leer e importar los datos.
Espero a ver estas opciones en futuros artículos.
Por cierto, en el pasado, cuando hacia la transferencia de datos de hojas de cálculo en bases de datos he utilizado la siguiente técnica. Uso la función de Excel "concatenar" para crear una declaración de sql INSERT en una sola línea y, a continuación, copia la función abajo. Por ejemplo, para insertar los dos primeros campos sólo, yo haría lo siguiente en Excel y, a continuación, copia los consultas de sql en Mysql.
Code:
=CONCATENAR("INSERT INTO testorders (orderid, customerid) VALUES (";A2;",";B2;")") |
Esto resulta en lo siguiente
Code:
INSERT INTO testorders (orderid, customerid) VALUES (840,25) |
Recuerda, sin embargo, tener cuidado en relación con diferentes tipos de datos; por ejemplo, tendrás que incluir el apóstrofe en la concatenación cuando el campo es del formato varchar.