如何使用psql从gzip文件恢复postgres db?(arelle:XBRL SEC DB)

Jer*_*emy 3 postgresql ubuntu-16.04 arelle

我从arelle.org下载了xbrldb_SEC_pg_2014-11-02.pg.gzip postgres pg_dump文件.然后,我在pgAdminIII中运行了架构ddl文件,并重新创建了所有数据库,函数等.

当我尝试使用以下内容还原数据库时:

desktop:~/Downloads$ sudo postgres zcat xbrldb_SEC_pg_2014-11-02.pg.gzip | psql -U postgres public
Run Code Online (Sandbox Code Playgroud)

我明白了:

sudo: postgres: command not found psql: FATAL: Peer authentication failed for user "postgres"
Run Code Online (Sandbox Code Playgroud)

我可以将文件zcat转换为文件来扩展它.看起来它是一个pg_dump文件.

postgres=> pg_restore -a /home/jeremy/Downloads/xbrldb_SEC_pg_2014-11-02.txt
postgres-> ;
ERROR:  syntax error at or near "pg_restore"
LINE 1: pg_restore -a /home/jeremy/Downloads/xbrldb_SEC_pg_2014-11-0...
    ^
postgres=> pg_restore -a postgres /home/jeremy/Downloads/xbrldb_SEC_pg_2014-11-02.txt;
ERROR:  syntax error at or near "pg_restore"
LINE 1: pg_restore -a postgres /home/jeremy/Downloads/xbrldb_SEC_pg_...
Run Code Online (Sandbox Code Playgroud)

那么我尝试使用PG Admin III和我的输出:

/usr/bin/pg_restore --host localhost --port 5432 --username "postgres" --dbname "public" --role "postgres" --no-password  --section data --data-only --exit-on-error --table accession --schema public --verbose "/home/jeremy/Downloads/xbrldb_SEC_pg_2014-11-02.backup"
pg_restore: [archiver] input file appears to be a text format dump. Please use psql.
Run Code Online (Sandbox Code Playgroud)

进程返回退出代码1.

请问我需要做些什么来恢复数据库?

有谁知道我需要做什么才能将数据库从2014-11-02更新到当前日期?

icu*_*ken 5

你应该运行psql作为postgres用户,而不是zcat,所以尝试使用以下内容:

zcat xbrldb_SEC_pg_2014-11-02.pg.gzip | sudo -u postgres psql public
Run Code Online (Sandbox Code Playgroud)

PS pg_restore是一个实用程序,而不是PostgreSQL命令,这意味着您应该从命令行运行它,而不是从psql运行它.