我想创建一个新架构(NPS
)。
我有现有的架构(public
)。
创建NPS
后,我想将public
架构的所有内容复制到NPS
架构而没有表数据。
,并且必须在public
模式中将现有NPS
序列设置为0。
评论和答案深表感谢。
答案 0 :(得分:0)
您使用pg_dump -F c -s -n public <yourdatabase>
仅获取对象定义。
将转储恢复到其他数据库,将模式public
重命名为nps
(不要使用大写!),设置适当的模式权限,然后再次转储。
将转储恢复到原始数据库。
要回答您的问题是否会重置序列,一个简单的实验将向您显示它确实如此:
CREATE SEQUENCE testseq;
SELECT nextval('testseq');
nextval
---------
1
(1 row)
SELECT nextval('testseq');
nextval
---------
2
(1 row)
然后转储并说服:
pg_dump -n laurenz -t testseq -s test
...
CREATE SEQUENCE laurenz.testseq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE laurenz.testseq OWNER TO laurenz;
--
-- PostgreSQL database dump complete
--