2010-09-14 7 views
9

J'ai reçu un fichier csv qui contient une exportation de la table de base de données d'un client. Deux des colonnes sont des dates et dans le fichier elles sont au format mm/jj/aaaa.comment faire pour phpMyAdmin importer datetime correctement de csv?

ID | ActivateDate 
----------------- 
1 | 05/22/2010 
2 | 10/01/2010 

Notre base de données mySQL que je dois les importer dans ces colonnes a définies comme datetime, avec une valeur par défaut de null. Lorsque j'utilise la fonction d'importation dans phpMyAdmin, toutes les colonnes de date des enregistrements importés sont définies sur 0000-00-00 00:00:00, qu'il y ait ou non une valeur dans le fichier d'importation.

Quelqu'un peut-il me dire ce que je dois faire pour que la colonne ActivateDate de la base de données soit définie sur 2010-05-22 00:00:00 au lieu de 0000-00-00 00:00:00?

Répondre

9

Si possible, j'importerais ces valeurs dans une colonne varchar fake_column d'abord, puis les pousser dans la vraie colonne real_column en utilisant STR_TO_DATE.

UPDATE tablename SET real_column = STR_TO_DATE(fake_column, '%m/%d/%Y'); 

Reference on how to build the format string

+0

Merci. J'ai donc fait l'importation dans les colonnes temp varchar, et cela a fonctionné. Mais quand j'ai fait ceci: UPDATE arrc_Voucher SET 'ActivatedDT' = STR_TO_DATE (ActivatedDTtmp, '% Y-% m-% d% H:% m:% s') la colonne ActivatedDT (la colonne datetime réelle) est toujours null et le La zone de requête myPHPAdmin indique "0 rows affected". Des idées? – EmmyS

+0

@EmmyS non, si votre format entrant est '05/22/2010', vous devez utiliser la notation ci-dessus. C'est la définition des données * entrantes * –

+0

Merci. Je pensais parce que vous avez donné la référence sur la construction de la chaîne de format que j'étais censé changer le format. – EmmyS

6

J'étais en mesure de le faire en changeant les champs de date au format personnalisé aa-mm-jj. (FORMAT> CELLULES> Personnaliser> aa-mm-jj.

je devais enregistrer comme un XLS, mais a pu importer correctement directement dans la table en utilisant la version 3.3.10 PHPMyAdmin

+0

Is4680, c'est bien jusqu'à ce que vous avez plus de 65 000 lignes. Cela devient trop important pour la plupart des versions d'Office. –

+1

Merci. C'est la meilleure solution. Mais je l'ai fait avec format-> cells-> date puis en sélectionnant la solution UK – Ruwantha

+0

Bes, devrait être la réponse approuvée. – Sandhu

3

Si vous avez la fichier dans un format CSV l'ouvrir dans Excel.

  1. clic droit sur le titre de la colonne contenant les dates.
  2. Sélectionnez les cellules Format
  3. Cliquez sur la catégorie "Custom"
  4. Collez "aaaa-mm-jj h: mm: ss" dans la zone de saisie.
  5. Enregistrez le document.
  6. Importer dans un tableau à l'aide de phpMyAdmin
+0

C'est exactement comment je l'ai fait aussi après avoir essayé et échoué avec la réponse acceptée. Cela semblait plus facile pour moi .. – nematoth

+0

Pas une option, si vous n'avez pas Excel, et/ou fichier csv est trop grand – user664769