Hola,

Hace un tiempo yo me planteaba lo mismo, y la sugerencia que me dieron y que después de hacerlo un tiempo me parece excelente es:

1) Tener tres entornos: desarrollo, test y producción.
2) Bajar a desarrollo un backup de producción (Probablemente con datos no reales pero representativos de los casos de prueba), a desarrollo antes de empezar con los cambios y otra a test. Te quedás con el dump de test. 3) Mientras vas desarrollando, vas generando un script de creación / modificación de la estructura. Lo vas subiendo al controlador de versiones (Yo uso cvs, imagino que se puede hacer con cualquier otro) 4) Hacés un script que actualice el cvs y ejecute todos los scripts que se agregaron o cambiaron .Usando cvs y bash sería algo así como:

for i in $i(cvs -q update|cut -d" "-f1);do
   echo $i|psql db
done;

5) Probás la aplicación en test. Si no funciona bajás el dump, cambiás el script de creación y volvés a ejecutar el bash.
6) Cuando lo tenés funcionando bien ejecutás el bash en producción.

Saludos.
Pablo.

PD: Si a alguien se le ocurre como hacer un rollback de esto de una forma más práctica o rápida que restaurando un dump, les agradecería que me lo informen!!!

----- Original Message ----- From: "Sam" <[EMAIL PROTECTED]>
To: <pgsql-es-ayuda@postgresql.org>
Sent: Tuesday, August 12, 2008 10:32 AM
Subject: Re: [pgsql-es-ayuda] Actualizar estructura de una BD en base a otra


Cualquier cambio que se haga a una bd tiene que hacerse mediante
scripts, nunca con editores gráficos, básicamente, porque es la única
forma de saber que lo que se desarrolló, y posteriormente testeó en QA
y UAT es exactamente lo mismo que se está tirando a producción.
Otro tema muy importante que viene a colacion con esto es el
versionado, te recomiendo este artículo:

http://www.codinghorror.com/blog/archives/001050.html

y en particular, los cinco links que tiene al blog de K. Scott Allen,
que toca unos cuantos puntos interesantes sobre el tema.

2008/8/12 el-PRiNCiPiTo <[EMAIL PROTECTED]>:
  Hola, no se ni que titulo poner en el post porque no se si esta forma de
trabajo que tenemos es muy buena. Yo creo que no así que agradezco cualquier
sugerencia.

  Os explico a que me refiero con la forma de trabajo:
  Estamos desarrollando un programa que almacena los datos en una base de
datos postgresql (la versión es 8.2). El programa ya esta funcionando pero
vamos añadiéndole funciones, lo que hace que tengamos que añadir tablas o
campos a las tablas ya creadas en el base de datos.
Entonces tenemos una "copia" de la base de datos que se usa en el programa
en el equipo en que se desarrolla el programa. Yo añado lo que necesito a
esta base de datos y cuando actualizo el programa añado a mano cada tabla o
campo nuevo en la base de datos "verdadera".
  El problema de esto es que, ademas de ser muy laborioso, no es nada
practico ya que es difícil saber si has añadido todo lo nuevo.

  Entonces mi pregunta es si hay alguna forma de "actualizar" la base de
datos del programa usando la "nueva versión" y conservando los datos que ya hay en la base de datos ya que los datos que tengo en la nueva son sólo para
pruebas y los de la antigua son datos reales que no deben modificarse.

  Espero haberme explicado, yo creo que todo este proceso que hacemos es
demasiado complicado y que debe haber un sistema mejor para trabajar así
alguien me sugiere otra forma de trabajo que solucione este problema me
serviría igualmente.

  Muchas gracias a todos.
--
TIP 5: ¿Has leído nuestro extenso FAQ?
       http://www.postgresql.org/docs/faqs.FAQ.html

--
TIP 2: puedes desuscribirte de todas las listas simultáneamente
   (envía "unregister TuDirecciónDeCorreo" a [EMAIL PROTECTED])



--
TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo 
agradecerán

Responder a