Migración de registros de un usuario a otro

Migración de registros de un usuario a otro

de Eder dos Santos -
Número de respuestas: 6

Estimados:

Supongamos que tengo dos usuarios en un entorno moodle (usuario A y usuario B).

Tengo una situación en la que necesito "migrar" los registros de todas las actividades (archivos, calificaciones, logs, mensajes de foro) del usuario A hacia el usuario B. Sería como unificarlos en uno sólo, de manera que pueda desactivar dicho usuario.

Uds. conocen alguna forma de hacerlo dentro del moodle, vía bd o algún módulo que lo haga simple?

Un saludo cordial.
Eder

Promedio de valoraciones: -
En respuesta a Eder dos Santos

Re: Migración de registros de un usuario a otro

de Xavier Paz -

Bastaría con cambiar el id de usuario, en la tabla user, de uno a otro. Siguiendo tu ejemplo, tendría que anotar el id del usuario A, borrar la cuenta del usuario A, y poner ese mismo id al usuario B, para que toda la actividad asociada al usuario A, pase ahora al usuario B.

En respuesta a Xavier Paz

Re: Migración de registros de un usuario a otro

de Eder dos Santos -
Saludos a todos. Xavier, gracias por tu pronta respuesta, pero la solución propuesta no me resuelve el problema... el problema es un poco más complejo, y quizá no me expresé bien. Me explico mejor. Ambos usuarios poseen actividades, y corresponden a la misma persona. No se quiere perder los registros de actividad de ningún usuario. Se quiere transferir los registros de uno de los usuarios hacia el otro, para eliminarlo a posteriori. Por ej.: los usuarios tienen los ids 19405 y 23802. Se quiere pasar los registros de foros, logs, cuestionarios, calificaciones, roles, etc. del usuario 23802 hacia la cuenta 19405, que por su vez también posee otros registros, en otros cursos. Se entiende? La idea es mantener todos los registros en un solo id, y no que le correspondan dos ids al mismo usuario. Un saludo cordial. Eder
En respuesta a Eder dos Santos

Re: Migración de registros de un usuario a otro

de Xavier Paz -

Pues entonces la solución es sencilla pero costosa. Rastrear en el log de Moodle toda la actividad del usuario desde el que se quiere traspasar todo y modificar tanto los registros del log como los registros de las tablas afectadas por cada una de las actividades realizadas por dicho usuario (foros, tareas, wikis, cuestionarios, consultas, etc...) La búsqueda siempre se tendría que realizar por id de usuario.

En respuesta a Xavier Paz

Re: Migración de registros de un usuario a otro

de Eder dos Santos -

Saludos a todos.

Xavier, pues esta es la idea que pensé, en principio.Incluso es más, de hecho he pensado en descargar un backup completo y hacer reemplazo por búsqueda textual.

Pero tengo más de 25 millones de registros sólo en mdl_log, y una búsqueda con reemplazo automático me resulta arriesgado, dado que tengo textos con los numeros mencionados, y que no corresponden.

De hecho, lo que buscaba era algun módulo o extensión que ya tuviera este mecanismo que comentas aceitado, de manera que identifique los atributos en las tablas correspondientes a cada módulo, algo por el estilo.

Igualmente, muchas gracias por el dato.

Un saludo.
Eder

En respuesta a Eder dos Santos

Re: Migración de registros de un usuario a otro

de Xavier Paz -

25 millones de registros filtrados por un id de usuario concreto, donde la única actualización a realizar es un campo con un valor concreto, sin fórmulas a calcular, no es tanto. Se puede hacer de forma fácil y segura mediante un UPDATE.

Dudo que exista un módulo así, tal vez alguien haya hecho algún script auxiliar o similar, el problema es que la cantidad de posibles cambios y tablas afectadas puede ser muy grande, y por tanto no es fácil. Además el log no registra absolutamente todo, hay cosas que únicamente se registran en las tablas del elemento correspondiente, por tanto, no hay un punto central exacto de donde comenzar la tarea.

En respuesta a Xavier Paz

Re: Migración de registros de un usuario a otro

de Eder dos Santos -

Xavier

Está claro, lo tuyo... pero todavia no me resuelve. He tirado el numero solo por una cuestión de factibilidad por un reemplazo textual desde el sql, debido a la performance, y no por la complejidad de las querys si hubiera elegido hacerlo vía statements update...

La cuestión que tengo puntual de hacer update es exactamente la que mencionas en tu ultimo párrafo: sería necesario asegurar que se están haciendo los updates en todas las tablas posiblemente afectadas... Esto necesariamente es lo que me desanima a implementar una solución vía bd, la idea de que algo puede quedar "colgado", sin la actualización correspondiente.

De todas las maneras, muchas gracias otra vez por tus sugerencias.

Un saludo.
Eder