如何在Postgres中保留原始模式的同一个数据库中将某些表从一个模式复制到另一个模式?

MAN*_*ANU 11 postgresql pgadmin

我想在Postgres中的同一个DB中只将4个表从schema1复制到schema2.并且希望将表保留在schema1中.知道如何在pgadmin和postgres控制台中做到这一点?

a_h*_*ame 39

您可以使用 create table ... like

create table schema2.the_table (like schema1.the_table including all);
Run Code Online (Sandbox Code Playgroud)

然后将数据从源插入到目标:

insert into schema2.the_table
select * 
from schema1.the_table;
Run Code Online (Sandbox Code Playgroud)

  • 如果您确实需要使用混合大小写和双引号创建的表的引号,那么“old_table”与“old_table”的名称完全相同,这是[强烈建议](https://wiki.postgresql.org/wiki/Don 't_Do_This#Don.27t_use_upper_case_table_or_column_names) (3认同)
  • @a_horse_with_no_name 此查询不会复制外键。然而,它确实复制了独特的约束。 (2认同)

小智 23

您可以使用CREATE TABLE AS SELECT.这种方式您不需要插入.将使用数据创建表.

CREATE TABLE schema2.the_table
AS 
SELECT * FROM schema1.the_table;
Run Code Online (Sandbox Code Playgroud)

  • @MANU:但它不会复制约束和索引 (6认同)
  • @a_horse_with_no_name 是的.. 好点.. 就在那里.....我的错误... (4认同)

Kyo*_*uma 6

从 v12 开始使用的简单语法:

CREATE TABLE newSchema.newTable
AS TABLE oldSchema.oldTable;
Run Code Online (Sandbox Code Playgroud)

  • 这个也不复制约束和索引。 (4认同)