MySQL - ignorar duplicados en insert

 
Vista:
sin imagen de perfil

ignorar duplicados en insert

Publicado por Angel (3 intervenciones) el 28/04/2021 00:20:15
Hola.

Estoy tratando de hacer un proceso de recoleccion de activides y transacciones en mysql.

Estoy copienado la informacion del general_log, general_log_history y otras 2 tablas de performance_schema en una tablas de otra base de datos que cree solo para fines de reporteria.

Al momento de insertar la informacion me genera duplicados, porque me trae la informacion actual mas la que ya se encuentra en las tablas.

He intentado con insert ignore y no me funciona.

He intentado crear indices uniques en algunas columnas y funciona para threads e event_statement_current de performance Schemas pero no para el general_log de mysql.

¿Como puedo hacer para copiar la informacion de manera unica (sin duplicados) cada dos minutes?

Si no puedo copiar la informacion de manera unica, ¿como puedo hacer para filtrar la informaccion repetida para que sea unica?

desc general_log;
1
2
3
4
5
6
7
8
9
10
+--------------+---------------------+------+-----+----------------------+--------------------------------+
| Field        | Type                | Null | Key | Default              | Extra                          |
+--------------+---------------------+------+-----+----------------------+--------------------------------+
| event_time   | timestamp(6)        | NO   |     | current_timestamp(6) | on update current_timestamp(6) |
| user_host    | mediumtext          | NO   |     | NULL                 |                                |
| thread_id    | bigint(21) unsigned | NO   |     | NULL                 |                                |
| server_id    | int(10) unsigned    | NO   |     | NULL                 |                                |
| command_type | varchar(64)         | NO   |     | NULL                 |                                |
| argument     | mediumtext          | NO   |     | NULL                 |                                |
+--------------+---------------------+------+-----+----------------------+--------------------------------+

Aparentement el event_time tendria que ser unico, sin embargo he tenido casos de hasta 4 y mas transacciones el mismo dia y segundo preciso.

De antemano, gracias por la informacion y la ayuda brindada.

Angel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

ignorar duplicados en insert

Publicado por Pepe (10 intervenciones) el 28/04/2021 03:07:49
Hola buenas, se me ocurre que inserte aquellos datos que no esten en la tabla, una pero si en tabla 2 ejemplo insert into tabla2 ( select * from tabla1 where campoUnico not in ( select campoUnico from tabla2 )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ignorar duplicados en insert

Publicado por Angel (3 intervenciones) el 28/04/2021 06:20:51
Muchas gracias.

Eso no lo he intentado aun, aunque vi ese ejemplo hace algun tiempo en otro foro.

El unico problema que veo con esa query es que el segundo select tomara bastante tiempo debido a que tiene que hacer un scan de toda la tabla para poder determinar que el valor a introducir no se encuentra ya presente en la tabla 2.

El contenido de la tabla puede llegar hasta un mas de 20000 registros por minuto, al final del dia es demasiado grande para poder hacer ese calculo. Intentare hacerlo de mi lado en un ambiente menos cargado para determinar una tasa de respuesta.

Muchas gracias por la ayuda.

Angel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar