Crear backup de una bd de Postgres desde Vfp 9

260 views
Skip to first unread message

rammic...@gmail.com

unread,
Feb 20, 2016, 6:17:11 PM2/20/16
to Comunidad de Visual Foxpro en Español
hola amigos del grupo 
estoy tratando de hacer automatico el backup de una bd de postgres desde mi programa echo en vfp 9.
si alguien tiene un ejemplo por favor lo puede compartir mil gracias 

Martin Paredes

unread,
Feb 21, 2016, 1:31:25 PM2/21/16
to Comunidad de Visual Foxpro en Español
interpreta este procedimiento:

PROCEDURE backupdb

LOCAL Cdrive

STORE [] TO Cdrive

IF ! FILE(FULLPATH(CURDIR())+ALLTRIM(UPPER(_SCREEN.obj_sysdatabasename))+[.BAT]) THEN

IF DIRECTORY(SYS(5)+[\Program Files\PostgreSQL\9.3\bin\]) THEN

IF ! DIRECTORY(FULLPATH(CURDIR())+[BACKUPDB\]) THEN

MKDIR ALLTRIM(FULLPATH(CURDIR())+[BACKUPDB\])

ENDIF

IF DIRECTORY(FULLPATH(CURDIR())+[BACKUPDB\]) THEN

Cdrive=LEFT(SYS(5), 1)

lnFile=FCREATE(FULLPATH(CURDIR())+ALLTRIM(UPPER(_SCREEN.obj_sysdatabasename))+[.BAT])

IF lnFile<0 THEN

cerror="Error, Al Crear Archivo :"+ALLTRIM(UPPER(_SCREEN.obj_sysdatabasename))+[.BAT]

ELSE

FPUTS(lnFile, [@ECHO OFF])

FPUTS(lnFile, [@setlocal enableextensions])

FPUTS(lnFile, [@cd /d "%~dp0"])

FPUTS(lnFile, [SET PGPATH=]+Cdrive+[:\"Program Files"\PostgreSQL\9.3\bin\])

FPUTS(lnFile, [SET SVPATH=]+Cdrive+[:\mapasoft\backupdb\])

FPUTS(lnFile, [SET PRJDB=]+ALLTRIM(LOWER(_SCREEN.obj_sysdatabasename))+[])

FPUTS(lnFile, [FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k])

FPUTS(lnFile, [FOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=%%i%%j%%k])

FPUTS(lnFile, [SET DBDUMP=%PRJDB%_%d%_%t%backup])

FPUTS(lnFile, [@ECHO OFF])

FPUTS(lnFile, [%PGPATH%pg_dump -h localhost -p 5432 -U postgres -F custom -E UTF8 %PRJDB% > %SVPATH%%DBDUMP%])

FPUTS(lnFile, [echo Backup Taken Complete %SVPATH%%DBDUMP%])

FCLOSE(lnFile)

ENDIF

ELSE

Cerror="Error, El Directorio Respaldo, No Fue Localizado."

ENDIF

ELSE

Cerror="Error, En La Version Del Postrgresql, No Fue Localizado."

ENDIF

ENDIF

IF INT(LEN(ALLTRIM(Cerror)))=0 AND FILE(FULLPATH(CURDIR())+ALLTRIM(UPPER(_SCREEN.obj_sysdatabasename))+[.BAT]) THEN

=esperate('.::. RESPALDANDO BASE DE DATOS, '+ALLTRIM(UPPER(_SCREEN.obj_sysdatabasename))+', POR FAVOR ESPERE UN MOMENTO.....')

oWsh=CREATEOBJECT("wscript.shell")

oWsh.Run(FULLPATH(CURDIR())+ALLTRIM(_SCREEN.obj_sysdatabasename)+[.BAT], 0, .T.)

RELEASE oWsh

WAIT CLEAR

ENDIF

RELEASE Cdrive

RETURN Cerror

ENDPROC


Salds....
Mapasac
General Escobedo, N.L. Mexico....

rammic...@gmail.com

unread,
Feb 22, 2016, 11:57:03 AM2/22/16
to Comunidad de Visual Foxpro en Español
hola martin Gracias de antemano 

Me podrias detallar o explicar como funciona este procedimiento y no veo donde se coloca la clave de la base de datos 
te agradeciera toda tu explicación gracias mil gracias

richard

Martin Paredes

unread,
Feb 22, 2016, 1:03:22 PM2/22/16
to Comunidad de Visual Foxpro en Español
con gusto, basicamente esta rutina genera un archivo extension .bat en la cual integra el nombre de la base de datos utilizada, yo la utilizo y la genero una sola vez para que mediante la utileria de cobian backup lo ejecute programaticamente y asi genero automaticamente los respaldos de las bases de datos de los clientes.

este es el archivo final :

@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"
SET PGPATH=C:\"Program Files"\PostgreSQL\9.3\bin\  (directorio donde esta intalado el SGBD)
SET SVPATH=C:\mapasoft\backupdb\  (directorio donde se grabara el respaldo)
SET PRJDB=elpatito    (nombre de la base de datos a respaldar)
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k (fecha del respaldo)
FOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=%%i%%j%%k   (hora del respaldo)
SET DBDUMP=%PRJDB%_%d%_%t%backup
@ECHO OFF
%PGPATH%pg_dump -h localhost -p 5432 -U postgres -F custom -E UTF8 %PRJDB% > %SVPATH%%DBDUMP%  (nombre del server, puerto y usuario)

echo Backup Taken Complete %SVPATH%%DBDUMP%

por ultimo no se utiliza la clave ya que el usuario:postgresql contiene todos los privilegios.

Salds...
Mapasac
General Escobedo, N.L. Mexico

rammic...@gmail.com

unread,
Feb 23, 2016, 4:31:51 PM2/23/16
to Comunidad de Visual Foxpro en Español
hola martin gracias por tu colaboracion 

te cuento que el archivo cuando lo ejecuto me muestra errores 

y tuve que  modificarlo pero me pide la contraseña 

@ECHO On
@setlocal enableextensions
@cd /d "%~dp0"
SET PGPATH=C:\Program Files (x86)\PostgreSQL\9.1\bin\
SET SVPATH=C:\Juezdynamic1\Backups\
SET PRJDB=bdjuez
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k
FOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=%%i%%j%%k
SET DBDUMP=%PRJDB%_%d%_%t%backup
@ECHO On
cd Program Files (x86)
cd PostgreSQL
cd 9.1
cd bin  
pg_dump -h localhost -p 5432 -U postgres -Fc -b -v -f "%SVPATH%%DBDUMP%" %PRJDB%

%PGPATH% : - no me toma la direccion y al momento de ejecutar me muetra que program no es comando

 -F custom -E UTF8 %PRJDB% > %SVPATH%%DBDUMP% : esta la tuve que modificar porque no encuentra la ruta del diriectorio especificado
 
 CON LOS CAMBIO ME HACE EL BACKUP PERO ME PIDE LA CONTRASEÑA 
Y LA IDEA ES QUE NO LA PIDA 

ESPERO ME SIGAS AYUDANDO PARA resolver esto mil gracias

Martin Paredes

unread,
Feb 23, 2016, 5:01:16 PM2/23/16
to Comunidad de Visual Foxpro en Español
si me das mas informacion, ma facil lo resolvemos.

que version de PostgreSQL tienes???
cuando entras al Pgadmin III, te pregunta la contraseña???
como se llama tu base de datos???

los datos del archivo que publique, funciona perfectamente...

Salds...
Mapasac


El sábado, 20 de febrero de 2016, 17:17:11 (UTC-6), rammic...@gmail.com escribió:

rammic...@gmail.com

unread,
Feb 24, 2016, 1:45:53 PM2/24/16
to Comunidad de Visual Foxpro en Español
hola Martin buenas tarde 

La versión 9.1
Si cuando entro al Pgadmin III si me pregunta por contraseña por seguridad 
y bd se llama bdjuez.

gracias por tu ayuda

Martin Paredes

unread,
Feb 24, 2016, 1:56:39 PM2/24/16
to Comunidad de Visual Foxpro en Español
Ahi esta el asunto, hay un mensaje (Store password) en la parte inferior activalo para que no te este solicitando la contraeña, por ahi empezamos.

Ejecuta el archivo de respaldo para detectar el siguiente error!!!!!

Salds....
Mapasac


El sábado, 20 de febrero de 2016, 17:17:11 (UTC-6), rammic...@gmail.com escribió:

Miguel Canchas

unread,
Feb 24, 2016, 2:53:55 PM2/24/16
to publice...@googlegroups.com

Yo pongo todo esto en un bat  y lo ejecuto :

set pgpassword=xchasis

"C:\Program Files (x86)\PostgreSQL\9.3\bin\pg_dump" -i -h localhost -p 5432 -U postgres -F c -b -v -f "mibase.backup" BD_MIBASE

 

 

MK

rammic...@gmail.com

unread,
Feb 24, 2016, 7:38:24 PM2/24/16
to Comunidad de Visual Foxpro en Español, mcan...@ximesa.com
Hola Martin buenas Noches 
Mucha gracias
te cuento que funciona super bien  y me genera el backup lo malo es que cualquiera puede entrar  a la BD ejecutando Pgadmin III.
*************
Por otro lado trato de ejecutar el procedimiento que me mandaste pero me sale un error

IF INT(LEN(ALLTRIM(Cerror)))=0 AND FILE(FULLPATH(CURDIR())+ALLTRIM(UPPER(_SCREEN.obj_sysdatabasename))+[.BAT]) THEN

 =esperate('.::. RESPALDANDO BASE DE DATOS, '+ALLTRIM(UPPER(_SCREEN.obj_sysdatabasename))+', POR FAVOR ESPERE UN MOMENTO.....') 


en el esperate 

Martin Paredes

unread,
Feb 24, 2016, 7:57:09 PM2/24/16
to Comunidad de Visual Foxpro en Español
te adjunto el archivo .bat con los datos que proporcionaste:

este es el codigo interno :

@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"
SET PGPATH=C:\"Program Files"\PostgreSQL\9.1\bin\ ------>   (revisa que carpeta exista)

SET SVPATH=C:\Juezdynamic1\Backups\
SET PRJDB=bdjuez
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k
FOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=%%i%%j%%k
SET DBDUMP=%PRJDB%_%d%_%t%backup
@ECHO OFF
%PGPATH%pg_dump -h localhost -p 5432 -U postgres -F custom -E UTF8 %PRJDB% > %SVPATH%%DBDUMP%

echo Backup Taken Complete %SVPATH%%DBDUMP%
PAUSE

Slds...
Mapasac


El sábado, 20 de febrero de 2016, 17:17:11 (UTC-6), rammic...@gmail.com escribió:
BACKUPPSQL.zip

rammic...@gmail.com

unread,
Feb 26, 2016, 3:01:44 PM2/26/16
to Comunidad de Visual Foxpro en Español
MARTIN 

Muchas gracias 

funciona bien  el archivo .bat

Voy a utilizar el procedimiento para que el sistema genere el archivo .bat 

y te cuento como me fue

gracias


Martin Paredes

unread,
Feb 26, 2016, 3:17:40 PM2/26/16
to Comunidad de Visual Foxpro en Español
excelente, la gran ventaja de este script es que te genera el respaldo (archivo) con el nombre de la bd+fecha+hora.

Salds....
Mapasac
General Escobedo, N.L. Mexico

El sábado, 20 de febrero de 2016, 17:17:11 (UTC-6), rammic...@gmail.com escribió:
Reply all
Reply to author
Forward
0 new messages