Accuracy-Global Ответов: 3

Как взять автоматический возврат в базу данных postgres в windwos


Привет я использую приведенный ниже код для автоматической базы данных postgres

@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"

SET PGPATH=C:\"Program Files"\PostgreSQL\11\bin\
SET SVPATH=E:\
SET PRJDB=postgres
SET DBUSR=postgres
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%.sql
@ECHO OFF
%PGPATH%pg_dump -h localhost -p 5432 -U postgres %PRJDB% > %SVPATH%%DBDUMP%

echo Backup Taken Complete %SVPATH%%DBDUMP%
pause



Но когда я запускаю это из планировщика задач,он просит ввести пароль,но я хочу выполнить его, не спрашивая пароля, пароль должен быть указан в самом коде, пожалуйста, дайте мне решение..

После выполнения из планировщика задач он генерирует обратный файл .sql, который я пытаюсь восстановить в базе данных postgres, но показывает ниже ошибку:

pg_restore: [archiver] input file does not appear to be a valid archive


Что я уже пробовал:

After executing from task scheduler it is generating .sql back file that file am trying to restore into postgres database but is showing below error:

<pre>pg_restore: [archiver] input file does not appear to be a valid archive

3 Ответов

Рейтинг:
2

phil.o

Согласно с PostgreSQL: документация: 9.1: pg_dump[^], вы можете использовать -w параметр или --no-passsword) чтобы никогда не выдавать запрос пароля.

Возможно, вам придется предоставить вместо этого файл .pgpass: Pgpass - PostgreSQL wiki[^]


Accuracy-Global

Привет колуд вы,пожалуйста, добавьте свой код в мой код и пришлите мне, я попробую

Рейтинг:
1

RickZeeland

Я тестирую его с PostgreSQL 9.5 вот так, и он сработал с первого раза. Обязательно запускайте программу от имени администратора:

@echo off
   for /f "tokens=1-4 delims=/ " %%i in ("%date%") do (
     set dow=%%i
     set month=%%j
     set day=%%k
     set year=%%l
   )
   set datestr=%month%_%day%_%year%
   echo datestr is %datestr%
    
   set BACKUP_FILE=test_%datestr%.backup
   echo backup file name is %BACKUP_FILE%
   SET PGPASSWORD=postgres
   echo on
   "C:\Program Files\PostgreSQL\9.5\bin\pg_dump" -h 127.0.0.1 -p 5432 -U postgres -F c -b -v -f %BACKUP_FILE% mytestdb


Accuracy-Global

Привет теперь я могу выполнить приведенный выше код и успешно выполнить и сгенерировать файл .backup и восстановить его в базу данных postgres...

Но каждый раз .backup файл не генерируется его переопределение на один и тот же файл,но нам нужно каждый раз создавать новый один раз при его выполнении, пожалуйста, дал предложения

RickZeeland

Тогда вы могли бы включить время, см.: https://stackoverflow.com/questions/1192476/format-date-and-time-in-a-windows-batch-script

Рейтинг:
0

RickZeeland

Видеть: Автоматическое резервное копирование в Windows - PostgreSQL wiki[^]

@echo off
   for /f "tokens=1-4 delims=/ " %%i in ("%date%") do (
     set dow=%%i
     set month=%%j
     set day=%%k
     set year=%%l
   )
   set datestr=%month%_%day%_%year%
   echo datestr is %datestr%
    
   set BACKUP_FILE=<NameOfTheFile>_%datestr%.backup
   echo backup file name is %BACKUP_FILE%
   SET PGPASSWORD=<PassWord>
   echo on
   bin\pg_dump -h <HostName> -p 5432 -U <UserName> -F c -b -v -f %BACKUP_FILE% <DATABASENAME>


Accuracy-Global

Не работает на меня,

@echo off
for /f "tokens=1-4 delims=/" %%i in ("%date%") do (
установить dow=%%i
установить месяц=%%j
установленный день=%%k
установленный год=%%l
)
set datestr=%месяц%_%день%_%год%
echo datestr - это %datestr%

set BACKUP_FILE=E:\test_%datestr%.backup
имя файла резервной копии echo - %BACKUP_FILE%
SET PGPASSWORD=postgres
Эхо продолжается
ОГРН\помощью pg_dump -ч локальный -5432 п-у Постгреса -Ф С-Б -в-Ф %BACKUP_FILE% Постгреса

Я заменил свои учетные данные не могли бы вы сделать если потребуется какие либо изменения

Accuracy-Global

Я попробовал это тоже столкнувшись с той же проблемой,не могли бы вы помочь в этом