2010-01-17 10 views
1

J'ai un fichier csv qui a un champ de date dans un format comme (entre autres domaines):mysqlimport - Importation d'un champ de date pas dans le bon format

17DEC2009 

Quand je fais une mysqlimport, les autres champs sont importés correctement, mais ce champ reste 0000-00-00 00:00:00

Comment puis-je importer cette date correctement? Dois-je d'abord exécuter une commande sed/awk sur le fichier pour le mettre dans un format approprié? Si oui, à quoi cela ressemblerait-il? Est-ce que le fait que le mois est épelé au lieu d'un numéro importe?

Répondre

5

STR_TO_DATE() vous permet de convertir une chaîne à une date appropriée dans la requête. Il attend la chaîne de date et une chaîne de format.

Vérifiez les exemples dans l'entrée du manuel pour déterminer le format correct.

je pense que ce devrait être le long des lignes de %d%b%Y (Cependant, le% b est censé produire des chaînes comme Dec au lieu de DEC de sorte que vous devrez essayer si cela fonctionne).

0

Voici l'approche que j'ai suivie pour résoudre un problème similaire. Mon cas d'utilisation était un peu complexe avec autant de colonnes, mais rendant ici simple la présentation de la solution. J'ai une table de personnes avec (Id int autogen, nom varchar (100), date DOB), et quelques millions de données (nom, DOB) doit être peuplé à partir du fichier CSV.

  1. Créé colonne supplémentaire dans la table des personnes avec le nom comme (varchar_DOB varchar (25)).
  2. Données importées à l'aide de l'utilitaire mysqlimport dans les colonnes (nom, varchar_DOB).
  3. Requête de mise à jour exécutée mettant à jour la colonne DOB à l'aide de la fonction str_to_date (varchar_DOB, 'format').
  4. Maintenant, j'ai prévu une colonne DOB remplie de données.

La même logique pourrait être appliquée à faire même d'autres types de données de mise en forme comme double, etc. time_stamp