Как восстановить БД из резервной копии PostgreSQL в Linux?
Не делайте ничего сложнее селектов через верморду, а лучше выкиньте её вообще.

pg_dump -U postgres -Fc merch_telegram_bot_db > test.backup
createdb -U postgres -E UNICODE merch_telegram_bot_db
pg_restore -U postgres -j 2 -d merch_telegram_bot_db test.backup
В моем слуаче, помог ответ на вопрос на stackoverflow: https://stackoverflow.com/questions/13115692/encod...


I am answering this because nothing from StackOverFlow worked for me.

I combined two solutions from other sites that did the job (this answer works for Ubuntu server 12.04 and PGSQL 9.1):

Create a file:
nano /etc/profile.d/lang.sh

Add the following
export LANGUAGE="en_US.UTF-8"
export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
Save it
Restart shell or run all export commands manually in current shell instance
Reconfigure so the encoding can be UTF8 ([got it from here][1])
sudo su postgres

psql

update pg_database set datistemplate=false where datname='template1';
drop database Template1;
create database template1 with owner=postgres encoding='UTF-8'

  lc_collate='en_US.utf8' lc_ctype='en_US.utf8' template template0;

update pg_database set datistemplate=true where datname='template1';
Use template1 for db creation.
I hope this helps ;)


Потом по совету galaxy я сделал вот так,


DROP DATABASE merch_telegram_bot_db;
CREATE DATABASE merch_telegram_bot_db ENCODING 'UTF8';


Дальше я использовал свою команду:

pg_restore -h localhost -p 5432 -U postgres -d merch_telegram_bot_db -v "/usr/local/bin/bot/test.backup"


Спасибо всем за помощь!