2010-09-14 16 views
9

Mi è stato fornito un file csv che contiene un'esportazione della tabella del database di un cliente. Due delle colonne sono date e nel file sono formattate come mm/gg/aaaa.come rendere phpMyAdmin importare correttamente datetime da csv?

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

Il nostro database mySQL che ho bisogno di importarli in ha quelle colonne definite come datetime, con un valore predefinito di null. Quando uso la funzione di importazione in phpMyAdmin, imposta tutte le colonne della data nei record importati a 0000-00-00 00:00:00, indipendentemente dal fatto che ci sia un qualsiasi valore nel file di importazione.

Qualcuno può dirmi cosa devo fare per ottenere la colonna ActivateDate nel database da impostare su 2010-05-22 00:00:00 anziché 0000-00-00 00:00:00?

risposta

9

Se possibile, importerei tali valori in una colonna varchar fake_column prima e quindi li inserisco nella colonna reale real_column utilizzando 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

Grazie. Così ho importato le colonne varchar temporanee e questo ha funzionato. Ma quando ho fatto questo: UPDATE arrc_Voucher SET 'ActivatedDT' = STR_TO_DATE (ActivatedDTtmp, '% Y-% m-% d% H:% m:% s') la colonna ActivatedDT (la colonna datetime reale) è ancora nullo e la L'area della query myPHPAdmin dice "0 righe interessate". Qualche idea? – EmmyS

+0

@EmmyS no, se il tuo formato in entrata è '05/22/2010', devi usare la notazione che ho mostrato sopra. È la definizione per i * dati * in arrivo –

+0

Grazie. Ho pensato perché hai dato il riferimento sulla costruzione della stringa di formato che avrei dovuto cambiare il formato. – EmmyS

6

ero solo in grado di fare questo cambiando i campi della data per Custom formato AA-MM-dd. (Formato> Celle> Custom> AA-MM-dd.

ho dovuto salvarlo come un file XLS, ma è stato in grado di importare correttamente direttamente nella tabella usando PHPMyAdmin versione 3.3.10

+0

Is4680, va bene finché non si hanno più di 65.000 righe. Diventa troppo grande per la maggior parte delle versioni di Office da gestire. –

+1

Grazie. Questa è la soluzione migliore. Ma l'ho fatto con format-> cells-> date quindi selezionando la soluzione UK – Ruwantha

+0

Bes, dovrebbe essere la risposta approvata. – Sandhu

3

Se avete la file in un formato CSV aprirlo in Excel.

  1. clic destro della colonna che contiene le date.
  2. Select formato celle
  3. Fare clic sulla categoria "Custom"
  4. Incolla "aaaa-mm-gg h: mm: ss" nella casella di inserimento.
  5. Salvare il documento.
  6. Importazione nella tabella utilizzando phpMyAdmin
+0

Questo è esattamente come l'ho fatto anche dopo aver provato e fallito con la risposta accettata. Mi è sembrato più facile ... – nematoth

+0

Non un'opzione, se non hai Excel, e/o il file csv è troppo grande – user664769

Problemi correlati