2012-02-13 10 views
8

Tengo un script de carga de MySQL que casi funciona, es perfecto excepto por las columnas de fecha, que no están en un formato amigable con MySql.MySQL carga las fechas en formato mm/dd/aaaa

 
load data infile '/Users/pfarrell/sandbox/waybase/folklore/Titles_1976.csv' 
into table fix76 
fields terminated by ',' 
enclosed by '"' 
ignore 1 lines 
( patentId, USPatentNum, title, grantDate, filedDate) 

El problema es que mis fechas están en formato dd/mm/aaaa. Parece que la función str_to_date es lo que quiero, pero no puedo encontrar la forma de usarlo en el comando load.
estoy imaginando algo como:

 
    grantDate = STR_TO_DATE(something, '%m/%d/%Y'), 

pero eso no quiere trabajar.

+0

He resuelto esta situación mediante la importación de fechas en una columna de cadena ayudante, y epílogos actualizar la tabla de la adición de las fechas con la fórmula de conversión. Esto no es muy agradable de ver, pero funciona. Veamos si alguien tiene una mejor manera ... – perissf

+0

¿Intentó cambiar la configuración regional de su conexión para ver si eso funcionaría? –

Respuesta

7

Puede cargar las cadenas de fechas en variables definidas por el usuario y luego usar STR_TO_DATE(@date, '%m/%d/%Y') para convertirlas a fechas de MySQL.

Prueba esto:

load data infile '/Users/pfarrell/sandbox/waybase/folklore/Titles_1976.csv' 
into table fix76 
fields terminated by ',' 
enclosed by '"' 
ignore 1 lines 
( patentId, USPatentNum, title, @grantDate, @filedDate) 
set grantDate = STR_TO_DATE(@grantDate, '%m/%d/%Y'), 
filedDate = STR_TO_DATE(@filedDate, '%m/%d/%Y') 
+0

Gracias, eso funciona genial. – fishtoprecords