tabla - Cómo cambiar la fecha de la cadena al formato de fecha de MySQL en el momento de la importación de CSV utilizando los datos de carga de MySQL.
importar excel a mysql php (2)
Debe usar la cláusula SET
, junto con una variable para hacer referencia al contenido de la fila en esa columna. En su lista de columnas, asigna su columna de fecha a un nombre de variable. A continuación, puede utilizarlo en su declaración SET
. (Nota, no tengo MySQL delante de mí para probar esto).
LOAD DATA LOCAL INFILE ''file.csv'' INTO TABLE my_table
FIELDS TERMINATED BY '',''
ENCLOSED BY ''"''
LINES TERMINATED BY ''/n''
(name, address, @var1)
set dateOfBirth = STR_TO_DATE(@var1, ''%d-%b-%y'')
Vea ejemplos en la página http://mysql2.mirrors-r-us.net/doc/refman/5.1/en/load-data.html (No estoy seguro de por qué esta página parece diferir de la documentación principal en que en realidad contiene un ejemplo de uso SET
.)
Estoy utilizando la instrucción SQL LOAD DATA LOCAL INFILE de MySQL para cargar datos de un archivo CSV en una tabla de base de datos existente.
Aquí hay un ejemplo de sentencia SQL:
LOAD DATA LOCAL INFILE ''file.csv'' INTO TABLE my_table
FIELDS TERMINATED BY '',''
ENCLOSED BY ''"''
LINES TERMINATED BY ''/n''
(name, address, dateOfBirth)
La tercera columna en el CSV que se asigna al campo dateOfBirth tiene actualmente la fecha en el siguiente formato:
14-Feb-10
¿Cómo puedo modificar la declaración SQL anterior para formatear la fecha en el formato de fecha de MySQL, es decir, 2010-02-14
?
Sé cómo convertir una fecha de cadena al usar la sintaxis INSERT normal usando:
STR_TO_DATE(''14-Feb-10'', ''%d-%b-%y'')
Un proceso un poco más largo que le da un poco de flexibilidad de prueba:
- Use una columna VARCHAR (64) llamada por ejemplo. mydate_text para guardar la fecha sin formato que importó.
- Cargue / importe la tabla colocando la fecha en este campo de texto plano
Ejecutar una consulta como
ACTUALIZAR mytable SET mydate = STR_TO_DATE (mydate_text, ''% Y-% b-% d'')
Si todo se ve bien, suelta tu columna mydate_text
- Si no está bien, simplemente intente de nuevo con un nuevo formato.
La ventaja de esta técnica es que le permite jugar con los formatos sin tener que volver a importar la tabla utilizando la sintaxis de MySQL LOAD DATA, algo más delicado, especialmente con columnas de tablas de longitud. Si sabes exactamente lo que estás haciendo, la respuesta anterior es la mejor. Si no eres un experto en MySQL, esta técnica puede ser útil hasta que obtengas los formatos correctos.