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.