2012-04-11 17 views
9

Hola tengo un INFILE quiero importar, pero las fechas son de la forma:LOAD DATA INFILE ¿convierte fácilmente YYYYMMDD a YYYY-MM-DD?

AADR,20120403,31.43,31.43,31.4,31.4,1100 
AAU,20120403,2.64,2.65,2.56,2.65,85700 
AAVX,20120403,162.49,162.49,154.24,156.65,2200 

¿Hay alguna forma fácil de convertir las fechas para ser '2012-04-03' sin tener que hacer algo ¿como abrirlo primero con una secuencia de comandos perl, convertir las fechas y luego volver a escribir el archivo?

TIA !!

+0

Intenta utilizar la función STR_TO_DATE. – Devart

+0

Sí, esto funcionó: SELECT STR_TO_DATE ('20130105', '% Y% m% d'); así que supongo que eso significaría importar en una tabla como STR y luego ejecutar STR_TO_DATE() en otra tabla que sea de tipo DATE? Sé agradable si pudiera hacer STR_TO_DATE() dentro del comando INFILE. –

+0

La instrucción LOAD DATA INFILE permite hacer esto en un comando. Echa un vistazo a la respuesta de Tombom. – Devart

Respuesta

21

Esto se carga y convierte en un solo paso, sin necesidad de otra tabla. Para obtener más información, consulte el manual.

LOAD DATA INFILE 'file.txt' 
INTO TABLE t1 
FIELDS TERMINATED BY ',' 
(column1, @var1, column3, ...) 
SET column2 = STR_TO_DATE(@var1,'%Y%m%d') 
+0

¡Sí, lo tengo para trabajar! Gracias. El truco estaba en averiguar dónde colocar la cláusula "CAMPOS SEPARADOS POR". Es torpe a la materia pasado en la caja de comentarios, pero era de comandos: –

+0

CARGA DE DATOS INFILE '/home/kensey/history/AMEX_20120403.txt' en campos de la tabla extract_bcp_import terminados en '', (símbolo @, var1, openp, alta , bajo, último, volumen) set tdate = STR_TO_DATE (@ var1, '% Y% m% d'); –

+0

No puedo ver su comando, pero sucedió que edité mi respuesta de todos modos :) Lo estaba probando ahora para estar seguro. – fancyPants

Cuestiones relacionadas