有没有一种方法可以在没有数据(包括所有键和约束)的情况下将表的结构复制到新表中?
Answers:
对于简单的模式副本,请使用like子句。
CREATE TABLE new_table_name ( like old_table_name including all)
好吧,使用SQL可以得到的最接近的是:
create table new (
like old
including defaults
including constraints
including indexes
);
但这不会复制所有内容。缺少的最重要的东西是外键。另外-触发器也不会被复制。不知道其他事情。
另一种方法是转储表结构,在转储中更改其名称,然后再次加载它:
pg_dump -s -t old databases | sed 's/old/new/g' | psql
但是请注意,这种简单的sed在其他地方也会由新变旧(例如,如果表列中的名称为“ is_scolded”,则它将变为“ is_scnewed”)。
问题实际上是:您为什么需要它-因为出于各种目的,我会使用不同的技术。
including constraints
不适用于PostgreSQL 8.3
CREATE TABLE new (like old, extra_column text);