pg数据库的恢复

进入数据库

sudo su - postgres

进入数据库bin目录

cd /usr/lib/postgresql/12/bin

恢复tar归档备份文件

./pg_restore -U postgres -W -d postgres -C "/usr/local/www/backup.tar"


出现

pg_restore: error: could not find header for file "toc.dat" in tar archive错误

解决方案 1:
在某处解压。
如果你看看.tar存档,你会发现一个重新存储.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.在脚本.sql中找到字符串" CREATE TABLE _reference20 ...  " - 在 psql 中运行它。
2. 在脚本中查找字符串" COPY _reference20 (...) FROM '$$PATH$$/XXX.dat';  " - 修复( $$PATH$$[/b]/XXX.dat  ),然后在psql中执行。
3.创建 CREATE DATABASE db_name ENCODING = 'UTF8'  ;
或通过 createdb pg_restore -U <username> -d db_name  <your/path/to/extracted/dir>/ 是下载和存档文件的路径。