首页 > 解决方案 > 不使用 pg_restore 和 pg_dump 填充表来传输数据库

问题描述

我绝对是数据库管理的初学者,但我正在尽我最大的努力解决这个问题,而不是太需要。我有两个 PostgreSQL 数据库,正在尝试将数据从一个迁移到另一个。我曾经pg_dump将我的数据库转储到一个.dump文件中:

pg_dump -Fc -U my_user -h my_host > mydb.dump

然后,我尝试将我的数据加载到 AWS RDS 上的另一个 PostgreSQL 实例中:

pg_restore -U my_other_user -h my_new_host --clean --create --no-owner mydb.dump

但是,我的新数据库中根本看不到任何数据。我确实看到了终端的输出:

ALTER TABLE ONLY public.one_table
    ADD CONSTRAINT one_table_fkey FOREIGN KEY (column) REFERENCES public.another_table(id);

--
-- Name: TABLE my_table; Type: ACL; Schema: public; Owner: -
--

GRANT SELECT ON TABLE public.my_table TO "read-only";
GRANT SELECT ON SEQUENCE public.my_table_seq TO "read-only";

--
-- Name: DEFAULT PRIVILEGES FOR SEQUENCES; Type: DEFAULT ACL; Schema: -; Owner: -
--

ALTER DEFAULT PRIVILEGES FOR ROLE my_user GRANT SELECT ON SEQUENCES TO "read-only";

--
-- Name: DEFAULT PRIVILEGES FOR TABLES; Type: DEFAULT ACL; Schema: -; Owner: -
--

ALTER DEFAULT PRIVILEGES FOR ROLE my_user GRANT SELECT ON TABLES  TO "read-only";

--
-- PostgreSQL database dump complete
--

我怀疑所有权存在一些问题?我的旧数据库名称和新数据库名称是否需要匹配?我检查了一个新的数据库是否在我的新 RDS 实例中以我的旧数据库名称弹出,但运气不好。

我尝试添加一个新数据库并在那里恢复:

pg_restore -U my_other_user -h my_new_host --clean --create --no-owner -d new_db mydb.dump

但是在它恢复之后,我什至无法在 Postico(我的 GUI 客户端)中看到这个新数据库。

我知道这不是太多的信息,但请让我知道我还需要提供什么来帮助弄清楚发生了什么。我绝对可以尝试逐表恢复,但我更喜欢使用pg_dump并且pg_restore因为我听说它更有效且工作更少(一旦我开始工作!)

标签: postgresql

解决方案


推荐阅读