Copiando completamente o parcialmente una Base de Datos (2)

Deja un comentario

Ya habíamos visto la forma manual de realizar esas tareas en el artículo:

Copiando completamente o parcialmente una Base de Datos (1)

así que ahora es el momento de ver como realizarlas usando un programa de administración gráfica. Todos ellos tienen esas posibilidades, en este artículo usaremos el EMS SQL Manager.

Las opciones que tenemos son:

  1. Copiarla totalmente. Con todos sus metadatos y todos sus datos
  2. Copiar solamente los metadatos. Es decir, su estructura
  3. Copiar todos los metadatos y el contenido de algunas tablas
  4. Copiar algunos metadatos y el contenido de algunas tablas

Opción 1. Copiarla totalmente. Con todos sus metadatos y todos sus datos

BACKUP01

Captura 1. Si haces clic en la imagen la verás más grande

Para realizar un backup debemos elegir la opción Services y luego la opción Backup Database…

BACKUP02

Captura 2. Si haces clic en la imagen la verás más grande

BACKUP03

Captura 3. Si haces clic en la imagen la verás más grande

BACKUP04

Captura 4. Si haces clic en la imagen la verás más grande

Cuando el proceso finalice tendrás tu backup, en la carpeta y con el nombre que le indicaste en la Captura 2.

Opción 2. Copiar solamente los metadatos. Es decir, su estructura

Para conseguir esto, en la Captura 3. marcamos la entrada: Backup metadata only

Opción 3. Copiar todos los metadatos y el contenido de algunas tablas

Para este caso lo mejor es crear un archivo de script con el contenido completo de la Base de Datos y luego eliminar lo que no nos interesa, modificar lo que queremos cambiar, y dejar como está a lo demás.

BACKUP05

Captura 5. Si haces clic en la imagen la verás más grande

Aquí, primero hacemos clic con el botón derecho sobre nuestra Base de Datos, luego elegimos la opción Tasks y luego la opción Extract Database…

BACKUP06

Captura 6. Si haces clic en la imagen la verás más grande

BACKUP07

Captura 7. Si haces clic en la imagen la verás más grande

BACKUP08

Captura 8. Si haces clic en la imagen la verás más grande

La Captura 8. solamente la veremos si en la Captura 6. no habíamos marcado la opción Extract all metadata and data of de database. Si marcamos esa opción después de la Captura 7. pasaremos directamente a la Captura 9.

BACKUP09

Captura 9. Si haces clic en la imagen la verás más grande

BACKUP10

Captura 10. Si haces clic en la imagen la verás más grande

En la Captura 10. puedes elegir cuales objetos te interesa extraer. Puedes extraerlos a todos o solamente a algunos de ellos.

BACKUP11

Captura 11. Si haces clic en la imagen la verás más grande

En la Captura 11. tienes la posibilidad de extraer los datos de solamente algunas tablas (como es el caso de este ejemplo), extraer los datos de todas las tablas, o extraer los datos de las tablas seleccionadas en la Captura 10.

BACKUP12

Captura 12. Si haces clic en la imagen la verás más grande

BACKUP13

Captura 12. Si haces clic en la imagen la verás más grande

Y finalmente, para que empiece el proceso de generar el archivo de script hacemos clic sobre el botón Run

Ese archivo generado es un archivo de texto, puedes realizar cualquier cambio que quieras en él.

Opción 4. Copiar algunos metadatos y el contenido de algunas tablas

Es igual a la Opción 3.

Conclusión:

Como has podido ver también en este artículo, con Firebird tenemos la posibilidad de realizar backups completos o parciales de nuestra Base de Datos.

Enviar el backup a un archivo de script tiene la gran ventaja de que todo es legible y así podríamos revisar ese script y descubrir errores o mejoras que se podrían realizar.

Artículos relacionados:

Entendiendo a los scripts

Usando scripts para documentar la Base de Datos

Ejecutando un script desde Visual FoxPro

Copiando completamente o parcialmente una Base de Datos (1)

El índice del blog Firebird21

El foro del blog Firebird21

Anuncios

Hallar los movimientos ocurridos entre dos fechas (otro método)

5 comentarios

En este artículo ya habíamos visto un método para hallar todos los movimientos (compras, ventas, cobranzas, pagos, etc.) que ocurrieron entre dos fechas dadas, y si en una fecha no hubo movimientos entonces mostrarla igual pero con un total de cero.

https://firebird21.wordpress.com/2014/04/29/hallando-todas-las-ventas-entre-dos-fechas-dadas/

Ahora, veremos otro método con el cual podremos obtener los mismos resultados, gracias a la colaboración de Claudio Martín.

Aquí, lo que haremos será crear un stored procedure seleccionable que nos devolverá todas las fechas de un rango dado, y luego cuando las necesitemos mediante un LEFT JOIN o un RIGHT JOIN las obtendremos.

Este método tiene la ventaja de que el stored procedure seleccionable que escribimos es uno solo y lo podemos utilizar en multitud de ocasiones diferentes, todas las veces que necesitemos un rango de fechas.


CREATE PROCEDURE RANGO_FECHAS(
      tdFecIni DATE,
      tdFecFin DATE)
   RETURNS(
      ftdFecha DATE)
AS
   DECLARE VARIABLE ldFecha DATE;
BEGIN

   ldFecha = tdFecIni;

   WHILE (ldFecha <= tdFecFin) DO BEGIN
      ftdFecha = ldFecha;
      SUSPEND;
      ldFecha = ldFecha + 1;
   END

END;

Entonces, usando la misma tabla que en el artículo anterior, escribiríamos:

SELECT
   R.ftdFecha,
   SUM(COALESCE(M.MVC_TOTALX, 0)) AS TOTAL_VENTAS_DIA
FROM
   RANGO_FECHAS('01/01/2014', '01/07/2014') R
LEFT JOIN
   MOVIMCAB M
      ON R.ftdFecha = M.MVC_FECHAX
GROUP BY
   R.ftdFecha

Y obtendríamos este resultado:

VENTAS1

Captura 1. Si haces clic en la imagen la verás más grande

El cual, como puedes verificar, es exactamente igual al obtenido con el otro método. Pero la ventaja de este nuevo método es que el stored procedure seleccionable podemos usarlo siempre que necesitemos obtener todas las fechas de un rango dado.

 Conclusión:

Una de las muchas cosas buenas que tiene el Firebird es que nos permite obtener los mismos resultados usando métodos diferentes, queda a nuestro criterio elegir el que nos parece más conveniente para cada situación particular.

En este caso, podemos tener un stored procedure que cuando las necesitemos nos devolverá todas las fechas de un rango, para ello simplemente lo juntamos mediante LEFT JOIN o RIGHT JOIN a la otra tabla y listo, ya está.

Artículos relacionados:

Hallando todas las ventas entre dos fechas dadas

Entendiendo a los Stored Procedures

El índice del blog Firebird21