Как восстановить БД из резервной копии PostgreSQL в Linux?
Проблема вот в чем, Я создал резервную копию посредством pgAdmin. Пытаюсь восстановить данную БД на VPS сервере.
НО у меня создаются только таблицы, без данных.
Перепробывал варианты: pg_restore -c -i -U postgres -d merch_telegram_bot_db test.backup -W
pg_restore --dbname=merch_telegram_bot_db --section=pre-data --jobs=4 test.backup
pg_restore -h localhost -p 5432 -U postgres -d merch_telegram_bot_db -v "/usr/local/bin/bot/test.backup"
и куча др. вариантов, не понимаю в чем проблема.
Подскажите как это все реализовать, либо как импортировать данные из CSV файлов в таблицы БД, посредством linux.
Ошибки при восстановлении резервной копии. В данном варианте я использовал команду:
pg_restore -h localhost -p 5432 -U postgres -d merch_telegram_bot_db -v "/usr/local/bin/bot/test.backup"
pg_restore: from TOC entry 3036; 0 108349 TABLE DATA category postgres
pg_restore: error: COPY failed for table "category": ERROR: character with byte sequence 0xd0 0x91 in encoding "UTF8" has no equivalent in encoding "LATIN1"
CONTEXT: COPY category, line 1
pg_restore: error: COPY failed for table "product": ERROR: character with byte sequence 0xd0 0x9c in encoding "UTF8" has no equivalent in encoding "LATIN1"
CONTEXT: COPY product, line 1
pg_restore: error: could not execute query: ERROR: insert or update on table "product_photo" violates foreign key constraint "product_photo_product_id_fkey"
DETAIL: Key (product_id)=(1) is not present in table "product".
Command was: ALTER TABLE ONLY public.product_photo
ADD CONSTRAINT product_photo_product_id_fkey FOREIGN KEY (product_id) REFERENCES public.product(product_id);
character in encoding "UTF8" has no equivalent in encoding "LATIN1"
. То есть в оригинале таблица была в кодировке UTF-8, а в текущей базе она почему-то в кодировке LATIN1. Поменяйте кодировку - и должно импортироваться.
Вторая ошибка уже интересней: заявляет, что таблица product_photo связана с таблицей product через столбец product_id, но при этом в product этот столбец product_id не найден, связывать не с чем.
Вторая ошибка уже интересней: заявляет, что таблица product_photo связана с таблицей product через столбец product_id, но при этом в product этот столбец product_id не найден, связывать не с чем.
так у него до этого определенные строки не загрузились, что удивительного?
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'