Я сбрасываю мою базу данных 'mydatabase' в текстовый файл 'mydatabase.sql' через командную строку.
"C:/Program Files (x86)/PostgreSQL/9.1/bin/pg_dump.exe " --host localhost --port 5432 --username "postgres" --no-password --verbose --file "C:\Users\User 1\Desktop\mydatabase.sql" "mydatabase"
Это хорошо.
Но после многих попыток я не могу сделать pg_restore эти файлы обратно в базу данных с данными.
Но если я удалю все таблицы в этой базе данных, я могу сделать это с помощью:
psql -f "C:\Users\User 1\Desktop\mydatabase.sql" "mydatabase" "postgres"
Это восстановление всех данных. Проблема в том, что я не могу запускать pgsl через VBNET/shell, поэтому мне больше нужно pg_restore.exe Это моя попытка:
"C:/Program Files (x86)/PostgreSQL/9.1/bin/pg_restore.exe " -i -h localhost -p 5432 -U postgres -d "mydatabase" -v "C:\Users\User 1\Desktop\mydatabase.sql"
... где я получаю сообщение:
C:\Users\User 1 > "C:/Program Files (x86)/PostgreSQL/9.1/bin/pg_restore.exe" -i -h localhost -p 5432 -U postgres -d "mydatabase" -v "C:\Users\User 1\Desktop\mydatabase.sql" недействительный двоичный файл "C:/Program Files (x86)/PostgreSQL/9.1/bin/pg_restore.exe" pg_restore.exe: входной файл [архиватор] не является допустимым архивом
Перед попыткой восстановления у меня есть пустая база данных "mydatabase" на сервере (без таблиц). Пожалуйста, помогите, чтобы pg_restore работал с 'mydatabase.sql', который сбрасывается с pg_dump и который, очевидно, содержит правильные данные, поэтому я могу использовать его через чистую командную строку или VBNET/shell.