2010-10-15 4 views
3

J'essaie d'importer un fichier CSV dans une base de données mysql.Modifier le champ CSV lors de l'importation vers mysql

Le fichier CSV contient (entre autres) les dates dans le format suivant:

"2010-04-31 17:43:12" 

Ma première approche a consisté à utiliser le script .sql suivant:

USE test; 
LOAD DATA INFILE '/tmp/test.cvs' 
replace INTO TABLE test_table 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
(...,mydate,...); 

qui ne fonctionne pas parce que les guillemets doubles font le champ "2010-04-31 17:43:12" une chaîne. Alors je me suis dit que je peux sur le convertir au format DATETIME en utilisant

select STR_TO_DATE("2010-04-31 17:43:12",'(%Y-%c-%e %H:%i:%S)') AS NewDateTime 

Cette requête fonctionne très bien sur son propre, mais je me demandais s'il y a un moyen de convertir la chaîne à la volée lors de l'importation. Quelque chose parmi les suivantes:

... 
LINES TERMINATED BY '\n' 
(...,STR_TO_DATE(mydate,'(%Y-%c-%e %H:%i:%S)') AS NewDateTime,...); 
+0

whoops, désolé à ce sujet. – kirbuchi

Répondre

2

Vous devez spécifier la liste des colonnes, puis utilisez la commande SET pour appliquer le STR_TO_DATE:

(@date,column2,column3,column4,column5,column6,) 
SET mydate = STR_TO_DATE(@date, '%Y-%c-%e %H:%i:%S') 

connexes:

+0

merci! ça a fait l'affaire. – kirbuchi

+0

@kirbuchi: De rien. Je suis surpris que ça n'arrive pas plus souvent –

Questions connexes