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

Union de bases de datos

Estas en el tema de Union de bases de datos en el foro de Bases de Datos General en Foros del Web. Buenos dias. Quiero hacer una operacion que la verdad es que no se si va a ser posible, os cuento. Tenemos 2 bd. La bd1 ...
  #1 (permalink)  
Antiguo 10/12/2009, 02:33
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 15 años
Puntos: 6
Union de bases de datos

Buenos dias. Quiero hacer una operacion que la verdad es que no se si va a ser posible, os cuento.

Tenemos 2 bd.

La bd1 esta en access, tiene una tabla que se llama TRABAJADORES y varios campos NOMBRE 1, APELLIDO 1, APELLIDO 2, etc. Sobre esta tabla estan creadas varias consultas, formularios, informes, etc, etc, etc, el problema es que esta tabla se creo hace tiempo, cuando el creador (presente) no tenia ni papa de bases de datos relacionales.

La bd2 esta en mysql, tiene una tabla que se llama t_trabajadores y varios campos nombre, apellido1, apellido2, etc. Esta base de datos debe de contener los datos de la bd echa en access, ademas de que cuando los datos sean modificados, ya sea en access o en mysql, evidentemente, se modifique en los dos sitios. (vamos, que los datos se guarden en la bd mysql pero se puedan modificar tan en mysql como en la bd access).

Segun esto, lo que hay que conseguir es pasar los datos de un bd access a una bd mysql, y ademas, una vez pasados, decirle a bd access que su origen de datos ya no sean las tablas de la bd acces, si no que sean las tablas de la bd mysql, que ademas, los nombres de los campos son muy parecidos pero no iguales a los nombres de los campos de la bd Access.

Llego a saber el tema de vincular tablas y pasar datos con odbc, etc, etc, el problema es que si en la bd de access el campo que contiene el dato del nombre del trabajador se llama nombre1, en la bd echa en mysql se llama nombre.

La solucion puede parecer facil, cambia el campo nombre1 de access a nombre (esto no es posible, ya que hay mucha consultas, formularios e informes y dejarian de funcionar si cambiara el nombre). Bueno, otra solucion, cambia el campo nombre de mysql a nombre1 (esto no es posible, ya que la bd de access se hizo hace mucho tiempo y los nombre de los campos contiene espacios, etc).

Necesito que deis alguna idea de como poder solucionarlo. A mi se me ha ocurrido, por ejemplo, si hubiera alguna forma de Access de decirle "deja de coger los datos de la tabla TRABAJADORES del campo nombre 1 y empieza a cogerlos de la bd mysql tabla t_trabajadores del campo nombre.

Por ejemplo, lo que pasa es que ni siquiera se si esto es posible.

Espero que alguien me pueda ayudar. Gracias.

P.D.: Por supuesto, os he puesto un ejemplo muy simple para simplificar, pero la bd real hablamos de 25 tablas aprox. con 20 campos, 18, 7, etc, etc.
  #2 (permalink)  
Antiguo 10/12/2009, 04:56
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Union de bases de datos

Cita:
Iniciado por AitorLopez Ver Mensaje
... Bueno, otra solucion, cambia el campo nombre de mysql a nombre1 (esto no es posible, ya que la bd de access se hizo hace mucho tiempo y los nombre de los campos contiene espacios, etc).
MySQL permite todos los caracteres permitidos en un nombre de directorio/fichero excepto '/', '\', y '.'.

No se si se puede hacer "deja de coger los datos de la tabla TRABAJADORES del campo nombre 1 y empieza a cogerlos de la bd mysql tabla t_trabajadores del campo nombre", pero una posible solución puede ser esta (crea copia de seguridad):
  • Desdes Access, exportar las tablas a MySQL.
  • Desde la misma BD de Access, vincular las tablas de MySQL antes exportadas. Access renombrará las tablas añadiéndoles al final '1'.
  • Renombrar las tablas vinculadas quitándole el '1' final. Access preguntará si se quiere reemplazar la tabla existente: respoderemos . De esta manera todos las consultas, formularios, etc., estarán ahora vinculadas a la BD de MySQL.
Esto debería funcionar en teoría. Puedes probar y nos cuentas cómo te ha ido.
  #3 (permalink)  
Antiguo 10/12/2009, 06:43
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 15 años
Puntos: 6
Respuesta: Union de bases de datos

Hola serser, gracias por tu respuesta.

Haciendo como comentas, por supuesto que funciona, pasaria a tener las tablas en mysql y no en access.

Pero no es el caso, recuerda que en mysql hay una bd que es la que tiene que servir para guardar los datos y que los nombres de la tablas y los nombres de los campos son muy parecidos, pero no identicos.

Gracias de todas formas por tu idea.
  #4 (permalink)  
Antiguo 10/12/2009, 08:01
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Union de bases de datos

A lo mejor no te he entendido bien.

¿Es totalmente necesario que los nombre de las tablas, etc., de la BD de MySQL sean los que tiene, por ejemplo, 't_trabajadores', 'nombre'?
¿Igual con los nombres de Access, por ejemplo, 'TRABAJADORES', 'nombre 1'?
  #5 (permalink)  
Antiguo 10/12/2009, 08:49
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 15 años
Puntos: 6
Respuesta: Union de bases de datos

Hola serser, mira te comento a ver si me explico mejor.

Tenemos una bd en access llamada vieja, con una tabla llamada tablavieja y un campo llamado campoviejo. La bd vieja contiene los datos que hay que traspasar a la otra bd.
La otra bd esta en mysql, se llama nueva, con una tabla llamada tablanueva y un campo llamado camponuevo.

Los registros de vieja, tiene que estar en nueva. (Esto mas o menos lo puedo hacer).

Una vez este esto hecho, los registros se van a ir grabando en las tablas de bd nueva.

En bd vieja, tengo muchos formularios e informes que me son muy utiles, pero como esots estan basados en campos de las tablas de bd vieja, al no meter ya datos en bd vieja, no van a estar actualizados.

Para solucionar esto, tengo que basar estos campos en tablas de la bd nueva. Para facilitar esto, ayudaria que los nombres de las tablas y de los campos de bd nueva fueran iguales que los de bd vieja, pero no lo son (ya que la estructura, nombres, etc son diferentes al estar mejor echa bd nueva).

Ir cambiando los nombres de los campos en todas las consultas, formularios e informes de bd vieja es muy dificil, ya no solo por la cantidad de trabajo, si no porque es muy dificil encontrar todas las consultas, formularios e informes en los que participa un determinado campo de una tabla que ha cambiado de nombre.

Espero que ahora se entienda un poco mejor. Gracias de nuevo. Un saludo.
  #6 (permalink)  
Antiguo 10/12/2009, 18:26
 
Fecha de Ingreso: febrero-2008
Mensajes: 101
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Union de bases de datos

Hola, ya probaste con esto?

http://gerardoramosun.wordpress.com/...l-server-2005/

JOKEROBSCURO...
  #7 (permalink)  
Antiguo 11/12/2009, 01:47
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Union de bases de datos

Cita:
Iniciado por AitorLopez Ver Mensaje
Ir cambiando los nombres de los campos en todas las consultas, formularios e informes de bd vieja es muy dificil, ya no solo por la cantidad de trabajo, si no porque es muy dificil encontrar todas las consultas, formularios e informes en los que participa un determinado campo de una tabla que ha cambiado de nombre.
Access tiene una herramienta llamada "Autocorrección de nombres" que está en Boton de Office -> Opciones de Access -> Base de datos actual. Al habilitar estas opciones, te permite hacer que, al modificar los nombres de las tablas/campos, también se automodifiquen los nombres de las tablas/campos relacionados en los formularios, las consultas, etc.

Desconozco las diferencias entre la estructura de la BD vieja de la nueva, pero si éstas no influyen en los formularios, etc. (aparte de los nombres), lo que puedes hacer es lo siguiente (con la BD de MySQL vacía):
  • En Access, cambia los nombres de las tablas y campos por los de la BD nueva (con Autocorrección de nombres, claro).
  • Exporta las tablas a MySQL y haz los cambios apropiados para la nueva estructura.
  • Desde la misma BD de Access, vincular las tablas de MySQL antes exportadas y renombrar las tablas vinculadas quitándole el '1' final.
Espero que te ayude.
  #8 (permalink)  
Antiguo 11/12/2009, 06:27
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 15 años
Puntos: 6
Respuesta: Union de bases de datos

Hola serser. Ya lo creo que me has ayudado.

Esta opción no sabia que existia, y por lo que he estado investigando, efectivamente, si cambiar el nombre de un campo o el nombre de una tabla, en consultas y formulario lo cambia tambien.

Ahora hay dos problemas. En informes, no se porque motivo, no lo cambia, por lo que hay que hacerlo manual.

El otro problema es el codigo Vba. Tampoco lo cambia, por lo que aqui hay dos opciones. La primera es ir recorriendo todos los objetos y cambiandoles el nombre, y la segunda hacer busquedas en todas las hojas Vba de un campo y reemplazarlo por el otro.

Cogeré la segunda opcion y una vez hecho todo esto, comprobaré que funcionan bien todos los formulario e informes.

Para pasar los datos de las tablas de Access a mysql haré lo que has comentado en este ultimo post.

Me llevará un buen rato, pero valdrá la pena tener una bd en mysql, poder meterla datos desde cualquier parte con los scripts y ademas, poder disponer de la velocidad de los formulario de Access y de la potencia de sus informes.

Solo me queda darte las gracias por todo lo que me has ayudado en este post.

Un saludo.
  #9 (permalink)  
Antiguo 11/12/2009, 06:46
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Union de bases de datos

Suerte y que sea leve, AitorLopez.

Si tienes más problemas, no dudes en preguntar.
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 03:43.