Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

problemas al migrar datos datetime a timestamp de mysql a postgres con el apatar

Estas en el tema de problemas al migrar datos datetime a timestamp de mysql a postgres con el apatar en el foro de PostgreSQL en Foros del Web. Hola, estoy trabajando con la herrmienta de migracion Apatar para hacer migraciones de mysql a postgres y resulta que cuando voy a hacer una migracion ...
  #1 (permalink)  
Antiguo 20/05/2009, 07:22
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 14 años, 11 meses
Puntos: 0
problemas al migrar datos datetime a timestamp de mysql a postgres con el apatar

Hola, estoy trabajando con la herrmienta de migracion Apatar para hacer migraciones de mysql a postgres y resulta que cuando voy a hacer una migracion de datos de una columna con el tipo de dato datetime a otra columna tipo timestamp me da error y no me migra los datos.

Pudieran decirme cual puede ser el error, yo tenia entendido que el timestamp era equivalente al datetime.
El error que me da es el siguiente:

Cannot convert value '0000-00-00 00:00:00' from column 14 to TIMESTAMP

ERROR: el valor null para la columna checked_out viola la restriccion not null
saludos,
Yenlidie
  #2 (permalink)  
Antiguo 20/05/2009, 07:38
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: problemas al migrar datos datetime a timestamp de mysql a postgres con el

Yenlidiet.

Al parecer postgres no tiene un tipo de dato llamado datetime. Por eso te genera error.
http://www.postgresql.org/docs/8.3/s...-datetime.html

Lo que debes hacer, es convertir el campo de datetime a timestamp desde mysql y volver a hacer la migración.

Desde mysql puedes cambiar el campo de datetime a timestamp así:

Código sql:
Ver original
  1. ALTER TABLE tabla MODIFY campo TIMESTAMP;

Nos cuentas como te va.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 17/06/2009, 07:17
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas al migrar datos datetime a timestamp de mysql a postgres con el

muchas gracias huesos52, ya probe eso y no me da resultado, el problema es que no me acepta el valor 0000-00-00 00:00:00 como valor por defecto, ya probe con otras fechas y si me lo migra bien el problema es con 0000-00-00 00:00:00. Ademas trate de crear un campo timestamp en el pgadmin y tampoco me deja ponerle un valor por defecto, en fin que ya no se que hacer.
Si se te ocurre algo por favor respondeme.
Gracias.
  #4 (permalink)  
Antiguo 17/06/2009, 11:11
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: problemas al migrar datos datetime a timestamp de mysql a postgres con el

yenlidiet

Primero que todo.. te pregunto..
Hiciste el alter table desde mysql?

Segundo...

Crea una tabla en postgres de prueba.

create table tabla_prueba(fecha timestamp);
e inserta un registro asi

insert into tabla_prueba values('0000-00-00 00:00:00');

Creo que te lo deja insertar, pero te pone un registro con unos intermedios. Mira la explicación.
http://es.tldp.org/Postgresql-es/web...ser/x1033.html

Ahora... cual es la necesidad que el valor por defecto sea ese? NMo podría ser otro que sea valido en postgres?

Nos cuentas como te va.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 18/06/2009, 12:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas al migrar datos datetime a timestamp de mysql a postgres con el

mira, ya yo probe el alter table desde mysql, ahora, que ese sea el valor por defecto no es una necsidad mia, el problema es que mi trabajo es ir a empresas que tengan sus bases de datos en mysql y migrarlas para postgres y resulta que muchas veces en esos lugares ponen ´0000-00-00 00:00:00´ como fecha por defecto porque el mysql si lo acepta, el problema es en el postgres que no lo acepta no se por qué, el postgres no me acepta un valor por defecto en un campo tipo timestamp.
Cuando trato de hacer lo que me dices en el insert me da este error, si puedes pruebalo tu a ver:

ERROR: date/time field value out of range: "0000-00-00 00:00:00"
HINT: Perhaps you need a different "datestyle" setting.

********** Error **********

ERROR: date/time field value out of range: "0000-00-00 00:00:00"
Estado SQL:22008
Sugerencias:Perhaps you need a different "datestyle" setting.


Yo lo que no quiero es que a la hora de hacer una migracion de una base de datos muy grande tenga que ir y cambiar todo los valores por defecto de las fechas, perderia mucho tiempo. A lo mejor es algo que tengo mal configurado.
disculpa tantas molestias
  #6 (permalink)  
Antiguo 18/06/2009, 12:57
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: problemas al migrar datos datetime a timestamp de mysql a postgres con el

Posible solución.

Antes de exportar la base de datos mysql haz lo siguiente desde la tabla en mysql.

Código sql:
Ver original
  1. UPDATE tabla SET campo_fecha=REPLACE(campo_fecha,'0000-00-00 00:00:00','0001-01-01 00:00:00');

de esta forma, cambias el valor de todos los registros que tengan 0000-00-00 en fecha por un formato valido para un campo timestamp en postgres.

Nos cuentas como te va.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 19/06/2009, 07:35
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: problemas al migrar datos datetime a timestamp de mysql a postgres con el

Bueno, ya con eso resuelvo, ya lo probe y todo bien, muchas gracias por todo
Saludos,
Yenlidiet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:40.