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

Ayudita con redundancia de datos

Estas en el tema de Ayudita con redundancia de datos en el foro de Mysql en Foros del Web. Buenas tardes. Tengo una base de datos la cual recibe informacion desde una hoja de excel, la hoja de excel es llenada a traves de ...
  #1 (permalink)  
Antiguo 05/10/2009, 13:05
 
Fecha de Ingreso: septiembre-2009
Mensajes: 40
Antigüedad: 14 años, 7 meses
Puntos: 0
Ayudita con redundancia de datos

Buenas tardes.

Tengo una base de datos la cual recibe informacion desde una hoja de excel, la hoja de excel es llenada a traves de intervalos en el dia y a su vez en cada ocasion que esta recibe nuevos datos es necesario guardarlos a la base de datos.

La hoja de excel maneja las averias que presentan los numeros telefonicos de una empresa, el problema radica en que, por ejemplo, los datos son guardados en la BD a las 8am y posteriormente a las 10am. Al guardar los datos a las 10am, se guardaran tambien los mismos datos que fueron guardados a las 8am.

Como podria hacer para evitar que se guarden los mismos datos que fueron guardados a las 8am (o sea solo guardar los que estan en el intervalo de 8:01 a 10 am).
La unica condicion en la que un numero podria estar repetido es que haya entrado a una hora diferente a la anterior (si entra a las 8am, y aparece de nuevo en la siguiente captura de las 10am, si debe ser guardado en la BD, de otra manera, no)
  #2 (permalink)  
Antiguo 05/10/2009, 13:14
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: Ayudita con redundancia de datos

Agrus... El problema es de excel. Que tiene que ver con mysql?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 05/10/2009, 13:59
 
Fecha de Ingreso: septiembre-2009
Mensajes: 40
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ayudita con redundancia de datos

Cita:
Iniciado por huesos52 Ver Mensaje
Agrus... El problema es de excel. Que tiene que ver con mysql?
Umm... Que la base de datos es en mysql. El programa hace referencia a los datos que estan en la base de datos, la cual esta hecha en mysql.
  #4 (permalink)  
Antiguo 05/10/2009, 14:09
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: Ayudita con redundancia de datos

Copia la etructura de tu BD para ayudarte mejor
  #5 (permalink)  
Antiguo 05/10/2009, 14:09
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: Ayudita con redundancia de datos

haz uso de insert ignore.

Lo que ya encuentre en la base de datos, lo ignora y sigue las sentencias. De esta forma no tendrás información redundante.

insert ignore into tabla values(valores);
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 05/10/2009, 14:22
 
Fecha de Ingreso: septiembre-2009
Mensajes: 40
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ayudita con redundancia de datos

Código:
CREATE TABLE `averias` (
  `tlf_av` text NOT NULL,
  `central` text,
  `empresa` text,
  `cola` text,
  `tipo_av` text,
  `cuadrilla` text,
  `nombre` text,
  `apellido` text,
  `estado` text,
  `area` tinytext,
  `nom_area` text,
  `hora` time DEFAULT NULL,
  `uni_n` text,
  `cc_cd` text,
  `pc_pd` text,
  `asd` text,
  `p_local` text,
  `fuente` text,
  `fecha` date DEFAULT NULL,
  `dias_pend` text,
  `rango` text,
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12703
Esa es la base de datos. Para abrir el archivo de excel y copiar el contenido en la base de datos uso fopen (php)

La unica manera que un numero (tlf_av) pueda estar repetido es que haya entrado al sistema en otra hora diferente a la ya existente

Última edición por Agrus; 05/10/2009 a las 14:28
  #7 (permalink)  
Antiguo 05/10/2009, 16:37
 
Fecha de Ingreso: octubre-2009
Mensajes: 6
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ayudita con redundancia de datos

Agrus, porque no haces una columna en Excel que sea una bandera ('Guardado','No Guardado') recorda que podés hacer querys sobre excel.
  #8 (permalink)  
Antiguo 05/10/2009, 17:19
 
Fecha de Ingreso: septiembre-2009
Mensajes: 40
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ayudita con redundancia de datos

Cita:
Iniciado por fishlv2 Ver Mensaje
Agrus, porque no haces una columna en Excel que sea una bandera ('Guardado','No Guardado') recorda que podés hacer querys sobre excel.
Para no extenderme en el porque no hago eso: no puedo tocar esos archivos ya que vienen de una macro que saca esos datos de otro sistema
  #9 (permalink)  
Antiguo 06/10/2009, 08:08
 
Fecha de Ingreso: septiembre-2009
Mensajes: 40
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ayudita con redundancia de datos

Consegui en la documentacion de mysql la sentencia REPLACE. La idea seria que la unica manera en la que se agregue un numero que ya exista en la base de datos sea que tenga una hora y/o fecha de entrada diferentes.

Creen que esto me sirva?
  #10 (permalink)  
Antiguo 06/10/2009, 08:20
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: Ayudita con redundancia de datos

Yo te hablaba de insert ignore.
Y lo que hace es ignorar un registro que viene repetido y continuar con las inserciones.
replace es muy similar, ya que si encuentra un registro igual, lo sobreescribe.

cualquiera de los dos te funciona.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #11 (permalink)  
Antiguo 06/10/2009, 08:34
 
Fecha de Ingreso: septiembre-2009
Mensajes: 40
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ayudita con redundancia de datos

Cita:
Iniciado por huesos52 Ver Mensaje
Yo te hablaba de insert ignore.
Y lo que hace es ignorar un registro que viene repetido y continuar con las inserciones.
replace es muy similar, ya que si encuentra un registro igual, lo sobreescribe.

cualquiera de los dos te funciona.
Gracias, probare ese insert ignore. Una pregunta antes de usarlo. No importa que no este usando como referencia la clave primaria? (ya que en este caso es incrementable asi que es dificil usarla como referencia)
  #12 (permalink)  
Antiguo 06/10/2009, 08:37
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: Ayudita con redundancia de datos

si es clave primaria también lo ignora.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #13 (permalink)  
Antiguo 06/10/2009, 09:13
 
Fecha de Ingreso: septiembre-2009
Mensajes: 40
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ayudita con redundancia de datos

Pues no me funciona el insert ignore. Ya que el usa como referencia la clave primaria o un indice unique, y la clave primaria es un auto_increment al que no le puedo hacer seguimiento :(
  #14 (permalink)  
Antiguo 07/10/2009, 11:38
 
Fecha de Ingreso: septiembre-2009
Mensajes: 40
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ayudita con redundancia de datos

Con la sentencia
Código:
-- SELECT COUNT(*) AS repetitions, tlf_av, hora,fecha FROM averias GROUP BY tlf_av, hora, fecha HAVING repetitions > 1;
puedo identificar los registros repetidos, ahora quisiera eliminarlos, pero solo 1 registro de los repetidos, hay alguna manera de borrar 1 solo registro aunque este 2 veces?
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 20:47.