Planificando Como Funcionaria Un Actualizador De Base De Datos???


Objetivo: Planificando Como Funcionaria Un Actualizador De Base De Datos???
en el programa taller que estoy usando actualmente en mi trabajo con éxito mas halla de que programaticamente hablando la programación no se la correcta, veo que son necesarias dos cosas, construir un actualizador o importador de base de datos anteriores a la nueva estructura de la nueva base de datos.
pensando en esto llego a la conclusion que en las bases de datos tengo que identificar cada base de datos así el importador o actualizador sabe que método usar para hacer la operación de pasar los datos de la vieja base de datos a la nueva.

como hacer para identificar una base de datos??
haciendo una tabla que identifique la base de datos?

el esquema seria algo así:

identificar base de datos
usar un selec case para identificar la base de datos y aplicar el método importador o actualizador correspondiente.


estos razonamientos son correctos? o como se hace habitualmente para actualizar bases de datos que son diferentes en su estructura interna???

Objetivo: Re: Planificando Como Funcionaria Un Actualizador De Base De Datos???
¿Qué motor usas?

Perfil MP  
Objetivo: Re: Planificando Como Funcionaria Un Actualizador De Base De Datos???
shordi escribió: [Ver mensaje]
¿Qué motor usas?


sqlite3

Objetivo: Re: Planificando Como Funcionaria Un Actualizador De Base De Datos???
Citar:
estos razonamientos son correctos? o como se hace habitualmente para actualizar bases de datos que son diferentes en su estructura interna???

Esta operación, que sólo se hace cuando se cambian versiones o se tienen que corregir fallos de diseño (los peores), no se puede estandarizar.
En producción, con bases de datos vivas, lo normal es hacer un programa actualizador que se tiene que probar mucho y bien para asegurarse que no tiene errores porque el día que lo ejecutas si hay algo mal te toca hacer una regresión en la base de datos y en la versión del programa sustituido y es un follón según qué casos.
El programa de actualización es de "una sola ejecución". Con MySQL puedes hacer consultas sobre dos bases simultáneamente, con lo que el proceso se simplifica, pero con SQLite sólo puedes trabajar con una base cada vez (al menos yo no conozco ninguna herramienta que sea capaz de hacer una consulta que use campos de bases de SQLite distintas).

Entonces sólo puedes hacer dos cosas: o trabajas con dos bases de datos (dos conexiones) distintas y haces el traspaso vía procesos en gambas tipo:
Result1=conexion1.Exec(Select campoA,campoB from tabla_vieja)
while result1.available
Result2=conexion2.create(tabla_nueva)
result2!camponuevo1=result1!campoA
resul2!camponuevo2=result1!campoB
result2.Update
result1.movenext
wend


o exportas los datos de la base vieja (en csv o sql) y los importas con nombres nuevos en la nueva. Luego pasas los datos de las viejas a las nuevas con sentencias sql tipo:

INSERT INTO tablanueva1 (camponuevo1,camponuevo2) SELECT campoA, campoB FROM tabla_vieja


y luego borras las tablas viejas (no olvidar hacer un vacuum de la base después).

No hay una manera estándar ni sencilla. Yo prefiero la segunda forma, porque es mucho más rápida (gambas a veces se eterniza en este tipo de procesos) pero según quieras hacer cosas con los campos viejos (separar su contenido en varios, operaciones matemáticas, etc. etc.) a veces SQL no es suficiente y es necesario el uso más claro y potente de los Result.

Saludos.

última edición por shordi el Lunes, 09 Marzo 2015, 20:28; editado 3 veces
Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4419s (PHP: -83% SQL: 183%)
Consultas SQL: 45 - Debug off - GZIP Activado