2012-02-13 5 views
8

Ho uno script di caricamento MySQL che funziona quasi, è perfetto eccetto per le colonne di date, che non sono in un formato amico di MySql.Date di caricamento di MySQL in formato mm/gg/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) 

Il problema è che le mie date sono in formato gg/mm/aaaa. Sembra che la funzione str_to_date sia ciò che voglio, ma non riesco a capire come usarlo nel comando load.
che sto immaginando qualcosa di simile:

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

ma che non funziona.

+0

Ho risolto questa situazione importando le date in una colonna stringa di aiuto, e postfazioni aggiornare la tabella aggiungendo le date con la formula di conversione. Questo non è molto bello da vedere, ma funziona. Vediamo se qualcuno ha un modo migliore ... – perissf

+0

Hai provato a cambiare le impostazioni locali per la tua connessione per vedere se avrebbe funzionato? –

risposta

7

È possibile caricare le stringhe di data in variabili definite dall'utente e quindi utilizzare STR_TO_DATE(@date, '%m/%d/%Y') per convertirle in date MySQL.

Prova questa:

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

Grazie, funziona benissimo. – fishtoprecords