2012-04-11 8 views
9

Hallo Ich habe eine INFILE ich importieren möchten, aber die Daten sind von der Form:LOAD DATA INFILE konvertieren leicht YYYYMMDD in 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 

Gibt es eine einfache Möglichkeit, die Daten zu konvertieren ‚2012-04-03‘ zu sein, ohne etwas zu tun zu haben wie öffne es zuerst mit einem Perl-Skript, konvertiere die Daten und schreibe die Datei dann wieder zurück?

TIA !!

+0

Versuchen Sie die Funktion STR_TO_DATE zu verwenden. – Devart

+0

ja das hat funktioniert: SELECT STR_TO_DATE ('20130105', '% Y% m% d'); Ich denke, das würde bedeuten, dass man in eine Tabelle als STR importiert und STR_TO_DATE() in eine andere Tabelle vom Typ DATE ausführt. sei nett, wenn ich die STR_TO_DATE() innerhalb des INFILE-Befehls machen könnte. –

+0

LOAD DATA INFILE-Anweisung ermöglicht dies in einem Befehl. Sehen Sie sich die Antwort von Tombom an. – Devart

Antwort

21

Dies lädt und konvertiert in einem Schritt, keine Notwendigkeit für eine andere Tabelle. Weitere Informationen finden Sie unter 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

Ja, ich habe es zur Arbeit! Danke. Trick war herauszufinden, wo die Klausel "FELDS SEPARATED BY" zu setzen. Es ist klobig zu vergangenen Sachen in der Kommentar-Box, aber Befehl war: –

+0

LOAD DATA INFILE '/home/kensey/history/AMEX_20120403.txt' in Tabelle extract_bcp_import FIELDS TERMINATED VON ',' (Symbol, @ var1, openp, hoch , niedrig, last, volume) set tdate = STR_TO_DATE (@ var1, '% Y% m% d'); –

+0

Ich kann Ihren Befehl nicht sehen, aber ich habe meine Antwort trotzdem bearbeitet :) Ich habe es jetzt getestet, um sicher zu gehen. – fancyPants

Verwandte Themen