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

时间:2016-03-22 22:36:29

标签: database macos postgresql

我有一个大约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

关于可能出现什么问题的任何建议?

1 个答案:

答案 0 :(得分:4)

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

要从转储文件还原,请将其传递到Postgres命令行工具psql

psql dbname < dumpfile.sql

另见the Postgres docs on backup and restore