2010-09-14 34 views
9

Se me ha proporcionado un archivo csv que contiene una exportación de la tabla de la base de datos de un cliente. Dos de las columnas son fechas, y en el archivo están formateadas como mm/dd/aaaa.cómo hacer que phpMyAdmin import datetime correctamente desde csv?

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

Nuestra base de datos MySQL que necesito para importarlos en cuenta esas columnas definidas como fecha y hora, con un valor por defecto null. Cuando uso la función de importación en phpMyAdmin, está configurando todas las columnas de fecha en los registros importados a 0000-00-00 00:00:00, independientemente de si hay algún valor en el archivo de importación.

¿Alguien me puede decir lo que tengo que hacer para que la columna ActivateDate en la base de datos se configure en 2010-05-22 00:00:00 en vez de 0000-00-00 00:00:00?

Respuesta

9

Si fuera posible, importaría esos valores en una columna varchar fake_column primero, y luego los insertaría en la columna real real_column usando 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

Gracias. Entonces hice la importación en columnas varchar tempranas, y funcionó. Pero cuando hice esto: UPDATE arrc_Voucher SET 'ActivatedDT' = STR_TO_DATE (ActivatedDTtmp, '% Y-% m-% d% H:% m:% s') la columna ActivatedDT (la columna real datetime) sigue siendo nula y el El área de consulta myPHPAdmin dice "0 filas afectadas". ¿Algunas ideas? – EmmyS

+0

@EmmyS no, si su formato de entrada es '22/05/2010', necesita usar la notación que mostré arriba. Es la definición de los datos * entrantes * –

+0

Gracias. Pensé porque usted dio la referencia sobre la construcción de la cadena de formato que se suponía que debía cambiar el formato. – EmmyS

6

yo era capaz de hacer esto cambiando los campos de fecha a formato personalizado aa-mm-dd. (FORMATO> CÉLULAS> Custom> aa-mm-dd.

tuve que guardarlo como un XLS pero fue capaz de importar correctamente directamente en la tabla utilizando phpMyAdmin versión 3.3.10

+0

Is4680, está bien hasta que tenga más de 65,000 filas. Se vuelve demasiado grande para la mayoría de las versiones de Office. –

+1

Gracias. Esta es la mejor solución. Pero lo hice con formato-> células-> fecha y luego al seleccionar la solución Bes de UK – Ruwantha

+0

, debería ser la respuesta aprobada. – Sandhu

3

Si usted tiene la archivo en un formato CSV abrirlo en Excel.

  1. haga clic derecho en el encabezado de la columna que contiene las fechas.
  2. Seleccione formato de celdas
  3. Haga clic en la categoría de "Custom"
  4. Pegue "aaaa-mm-dd h: mm: ss" en el cuadro de entrada.
  5. Guarde el documento.
  6. Importar a la tabla usando phpMyAdmin
+0

Esto es exactamente cómo lo hice también después de intentar y reprobar con la respuesta aceptada. Esto me pareció más fácil ... – nematoth

+0

No es una opción, si no tienes excel, y/o el archivo csv es demasiado grande – user664769

Cuestiones relacionadas