![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
![]() Buen día, tengo una aplicación en la que en versiones posteriores modificare la base de datos (estructura), necesito que al actualizar la aplicación, en la base de datos "raiz" (C:\Aplicacion\Base.FDB) si el campo versión : tabla configuración sea diferente al mismo campo pero en la tabla que está en un subdirectorio (C:\Aplicacion\Usuario\Base.FDB), copie solamente la estructura de la tabla raiz (C:\Aplicacion\Base.FDB) y la pegue en la base de datos que está en en el subdirectorio (C:\Aplicacion\Usuario\Base.FDB)
Mis bases están creadas en Firebird 2.5 ¿Alguien tiene alguna guía para hacerlo? Saludos ![]() |
#2
|
||||
|
||||
¿Y si generas un scrip de actualización?
Es lo que hacemos nosotros cuando generamos una nueva versión que incluye cambios en la estructura de Base de Datos.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
||||
|
||||
Buen día, ¿podrías darme un ejemplo para generar ese script? Estaba viendo que Firebird tiene una función para hacer backup y restore de solo la estructura de la base de datos, ¿también podría servir esta opción? Saludos.
|
#4
|
||||
|
||||
Cada versión nueva del programa va acompañada de script de actualización desde la anterior (y además incluye todos los anteriores), así la v1 (primera versión no lleva script), la v2 lleva el script s2, la version 3 lleva el s2 (para actualizar de la v1 a la v2) y el s3 (de la v2 a la v3), y así sucesivamente.
Si por ejemplo vas a instalar la v6 y estás actualizando desde la v4, debes lanzar en orden los script:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
||||
|
||||
Cita:
Estaba leyendo que Firebird tiene la opción de hacer backup y restore de solo la metadata (estructura) desde gbak, consigo hacer el backup de la metadata con el comando
Pero al hacer el restore de la metadata a la base que voy a actualizar
Me elimina toda la data. ¿Sabes que esta mal en mi comando de restore? o si me pudieras apoyar con una idea mas clara de ejecutar el script que me mencionas? Saludos ![]() |
#6
|
||||
|
||||
Si haces un backup de la estructura/metadata y luego lo restauras con el mismo nombre que una BD existente, obviamente tendrás la estructura/metadata de la que hiciste el backup.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
||||
|
||||
Cita:
En este caso, estoy copiando la estructura de la C:\Programa\RAIZ\BaseV2.FDB y poniendola en C:\Programa\RAIZ\BaseV2.FBK para despues la estructura de C:\Programa\RAIZ\BaseV2.FBK restaurarla en c:\pgroama\RAIZ\USUARIO\BASEV1.FDB Pero como te comento, me elimina los datos de la tabla pero si me actualiza la estructura, ¿sabrás en que estoy mal? Saludos. |
#8
|
||||
|
||||
Es que lo que estás haciendo, si no he entendido mal es algo similar a esto:
(Te pongo un ejemplo absurdo para que lo entiendas) Tienes una BD originalmente de la que extraes su metadata a un fichero, ejemplo: metadata.bak Tienes una hoja de cálculo llamada, ejemplo: ingresos-gastos.xls Ahora restauras metadata.bak con el nombre de ingresos-gastos.xls ¿Qué ocurre? pues que en lugar de tu hoja de cálculo tienes una BD vacía (metadata) de tu BD original. Restaura tu metadata con otro nombre que no exista.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#9
|
||||
|
||||
Cita:
Gracias por la pronta respuesta, C:\Programa\RAIZ\USUARIO\BASEV1.FDB es una base con datos ya grabados, al lanzar yo una actualización de mi pgrama la base C:\Programa\RAIZ\BASEV1.FDB ahora es C:\Programa\RAIZ\BASEV2, necesito que la estructura de C:\Programa\RAIZ\BASEV2.FDB se copie en C:\Programa\RAIZ\USUARIO\BASEV1.FDB sin alterar la data. ¿No sé si me explique? leyendo creo que lo puedo lograr con gbak al hacer un backup y un restore usando -metadata, pero el problema es que lo consigo. Agradezco tu apoyo ![]() |
#10
|
||||
|
||||
Exporta/extrae tus datos antes.
Después de restaurar la metadata, vuelves a importar los datos. Aunque lo normal es que extraigas todo junto.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#11
|
||||
|
||||
Cita:
No encuentro ninguna. Saludos y gracias por tu apoyo. |
#12
|
||||
|
||||
A ver si te estás liando, ¿para qué quieres importar/restaurar una metadata sobre una base de datos? no tiene mucha lógica.
Con gbak o con isql puedes extraer todo junto o solamente la estructura/metadata. Si quiere exportar solamente los datos puedes usar alguna utilidad como ibexpert, flamerobin, dbeaver, fbexport, etc. Exportar sólo la metadata sirve para tener una BD limpia para casos de necesidad.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#13
|
||||
|
||||
Cita:
Como lo comente en el post, en la aplicación a desarrollar, en versiones posteriores habrá cambios en la base de datos del usuario. No busco usar GBAK forzosamente, únicamente necesito que al hacer actualización del programa, se modifique la estructura de la "base de datos del usuario" según la estructura de la "base de datos modelo". |
#14
|
||||
|
||||
Eso no funciona así. Mira la contestación de Neftali, él te da un ejemplo.
Debes enfocar de otra forma. Tú tienes una BD, que es la que tienen los usuarios instalada. En esa BD puedes tener un campo donde guardas la última sentencia ejecutada, ejemplo: Cita:
Hay infinidad de formas de hacerlo, puedes tener ficheros de sentencias (scripts.sql) con números consecutivos. actualizacion1.sql, actualizacion2.sql, etc. Puedes tener una BD externa con un par de campos: Cita:
Hay varios hilos en los foros con ejemplos, echa un vistazo y luego regresa con las dudas que tengas. Esto se ejecuta con isql o con algún componente de scripts, no se usa gbak.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#15
|
||||
|
||||
Cita:
![]() |
#16
|
||||
|
||||
Yo creo que con la explicación de [Casimiro] ya te habrá quedado más claro, pero básicamente es que estás enfocando mal la solución para lo que tú necesitas.
Tienes una Base de Datos en versión1 y necesitas llegar a una Base de Datos versión2 con cambios en la estructura. Tu planteamiento es: 1) Extraigo datos de la verison1 (BACKUP) 2) Copio una BD version2 sobre la BD version1 3) Restauro los datos que extraje en el punto (1)(RESTORE) En teoría podría hacerse y digo en teoría porque se me ocurren muchas coas que pueden fallar. Pero además te estamos explicando que no es la manera correcta, sencilla y segura de hacerlo. La forma correcta y segura es: 1) Paso un script de actualización sobre la Base de Datos de la verison1 para convertir la estructura en la version2, sin tocar los datos. ¿Cómo sería un script de actualización de la versión1 a la versión2? Pues dependerá de lo que tengas que hacer, pero con sentencias SQL, puedes hacer todo lo que necesites; Crear, borrar y modificar talas, crear, borrar y modificar campos, indices,... ¿Cómo se genera ese script? Se puede hacer manualmente, pero lo normal es no hacerlo manualmente (si hay muchos cambios). Tienes una Base de Datos verison1 y otra versión2, hay utilidades que te generan en script necesario para pasar de la verison1 a la version2. ¿Ejemplo de script? Pues un ejemplo podría ser esto (en este caso crea una tabla nueva y le rellena algunos valores):
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#17
|
||||
|
||||
Cita:
Una disculpa por la demora, muchas gracias amigo, quedo más que claro, tengo más de 2 años sin programar y se me olvidaron algunas cosas de lógica jeje, saludos ! |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Copiar tablas de una base de datos a otra | Arale | Firebird e Interbase | 6 | 21-12-2009 18:40:05 |
copiar de una tabla de una base de datos a otra tabla igual de otra base de datos | ingabraham | Conexión con bases de datos | 1 | 14-10-2008 23:16:42 |
Mysql: copiar los campos de una tabla de una base de datos a otra tabla de otra base? | patriram | MySQL | 4 | 02-11-2007 16:00:24 |
Copiar estructura de una base de datos a una nueva en Delphi?? | burasu | Conexión con bases de datos | 0 | 30-12-2004 09:35:51 |
¿Copiar una base de datos en otra? | andres | Firebird e Interbase | 2 | 23-02-2004 18:34:25 |
![]() |
|