2012-04-11 11 views
9

Cześć Mam plik_we Chcę importować, ale terminy są postaci:LOAD DATA INFILE z łatwością przekonwertować YYYYMMDD na 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 

Czy istnieje łatwy sposób przekonwertować daty być „2012-04-03”, bez konieczności coś zrobić jak otworzyć najpierw skryptem perl, przekonwertować daty, a następnie ponownie zapisać plik?

TIA !!

+0

Spróbuj użyć funkcji STR_TO_DATE. – Devart

+0

tak to działało: SELECT STR_TO_DATE ('20130105', '% Y% m% d'); więc myślę, że to oznaczałoby zaimportowanie do tabeli jako STR, a następnie uruchomienie STR_TO_DATE() w innej tabeli, która jest typu DATE? bądź miły, gdybym mógł wykonać polecenie STR_TO_DATE() w poleceniu INFILE. –

+0

Instrukcja LOAD DATA INFILE umożliwia wykonanie tego w jednym poleceniu. Spójrz na odpowiedź Tomboma. – Devart

Odpowiedz

21

To ładuje i konwertuje w jednym kroku, bez potrzeby stosowania innej tabeli. Aby uzyskać więcej informacji, patrz 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

Tak, mam to do roboty! dzięki. podstępem było ustalenie, gdzie umieścić klauzulę "FIELDS SEPARATED BY". To jest przylegające do poprzednich rzeczy w polu komentarza, ale polecenie brzmiało: –

+0

ZAŁADUJ DANE INFILE '/home/kensey/history/AMEX_20120403.txt' do tabeli extract_bcp_import POLA ZAKOŃCZONE PRZEZ ',' (symbol, @ var1, openp, wysoki , niska, ostatnia, objętość) set tdate = STR_TO_DATE (@ var1, '% Y% m% d'); –

+0

Nie widzę twojego polecenia, ale tak czy inaczej, edytowałem swoją odpowiedź :) Testowałem to teraz. – fancyPants

Powiązane problemy