[Решено] pg_restore: [tar archiver] could not find header for file “toc.dat” in tar archive

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Ответить
[Решено] pg_restore: [tar archiver] could not find header for file “toc.dat” in tar archive, Postgres Загрузка бэкапа в PostgreSQL
В начале была ошибка:pg_restore: [archiver] input file does not appear to be a valid archive
пережал архив из zip в tar и появилась новая ошибка:
pg_restore: [tar archiver] could not find header for file “toc.dat” in tar archive
Использую pgAdmin 4 сервер Windows
Решение 1:
Разархивируйте куда то.
Если вы загляните в .tar архив, вы найдете restore.sqlгде вверху:

-- File paths need to be edited. Search for $$PATH$$ and
-- replace it with the path to the directory containing
-- the extracted data files.
Таким образом, для создания образца БД вы можете извлечь .tar содержимое где-нибудь и использовать одну команду:

sed -e 's/\$\$PATH\$\$/\/path\/to\/extracted\/files/g' restore.sql | psql   (сразу выполниться)
Или же
sed -e 's/\$\$PATH\$\$/\/path\/to\/extracted\/files/g' restore.sql > r.sql  (потом можно исполнить через PgAdmin или psql   )

Решение 2:
разархивируйте куда то
1. найдите в скрипте (restore.sql) строку "CREATE TABLE _reference20 ..." - выполните ее в psql.
2. найдите в скрипте (restore.sql) строку "COPY _reference20 (...) FROM '$$PATH$$/XXX.dat';" - подправьте ($$PATH$$[/b]/XXX.dat) и выполните ее в psql.

Решение 3:
1 создайте базу CREATE DATABASE db_name ENCODING = 'UTF8'; или через createdb
pg_restore -U <username> -d db_name  <your/path/to/extracted/dir>/ - это путь к загруженному и разархивированному файлу.
Услуги Системного Администратора - Работаю только с Юр. Лицами по договору обслуживания.
Страницы: 1
Ответить
Форма ответов
Текст сообщения*
:) ;) :D 8-) :( :| :cry: :evil: :o :oops: :{} :?: :!: :idea:
Защита от автоматических сообщений. Введите символы, изображенные на этой картинке в поле ввода &quote;Код подтверждения&quote;.