将数据库转储加载到 postgres 数据库中

问题描述 投票:0回答:2

我有一个大约 270MB 的数据库转储,我想将其加载到本地 postgres 数据库中。我输入以下命令:

pg_dump databasename < dumpfile.sql

之后我得到:

--
-- PostgreSQL database dump
--

SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;

--
-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner:
--

CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;


--
-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner:
--

COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';


--
-- Name: public; Type: ACL; Schema: -; Owner: starlord
--

REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM starlord;
GRANT ALL ON SCHEMA public TO starlord;
GRANT ALL ON SCHEMA public TO PUBLIC;


--
-- PostgreSQL database dump complete
--

为了验证转储是否成功并检查我使用打开 psql 终端的

psql
登录到 psql 终端的数据。

如果我输入

\l
我会得到所有数据库。我输入
\c databasename
连接到数据库,然后输入
\dt
检查表。然而它一直向我展示
No relations found
。相同的步骤对于其他数据库来说完全可以正常工作(加载转储,然后连接并显示表)。此外,加载转储后,如果我输入
\l+
查看每个数据库的大小,我感兴趣的数据库显示的大小为
6973kb
,而转储为
272MB

对于可能出现的问题有什么建议吗?

database macos postgresql
2个回答
6
投票

pg_dump
用于转储数据库。
pg_dump databasename < dumpfile.sql
可能会忽略输入文件并将转储显示到屏幕上,这似乎就是您得到的。

要从转储文件恢复,请将其通过管道传输到 Postgres 命令行工具

psql

psql dbname < dumpfile.sql

另请参阅 有关备份和恢复的 Postgres 文档


0
投票

恢复

latest.dump file
到本地数据库

pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
© www.soinside.com 2019 - 2024. All rights reserved.