有没有办法将表的结构复制到新表中,没有数据,包括所有键和约束?
答案 0 :(得分:63)
嗯,最接近SQL的是:
create table new (
like old
including defaults
including constraints
including indexes
);
但它不会复制一切。缺少的最重要的东西是FOREIGN KEYs。此外 - 也不会复制触发器。不确定其他事情。
另一种方法是转储表结构,在转储中更改它的名称,然后再次加载它:
pg_dump -s -t old databases | sed 's/old/new/g' | psql
但要注意,这种简单的sed也会在其他地方将旧的更改为新的(例如,如果你的表列中名为“is_scolded”,它将变为“is_scnewed”)。
问题实际上是:为什么你需要它 - 因为出于各种目的,我会使用不同的技术。
答案 1 :(得分:62)
对于简单的模式副本,请使用like子句。
CREATE TABLE new_table_name ( like old_table_name including all)
答案 2 :(得分:11)
看看pgAdmin - 到目前为止最简单的方法来做你想做的事 右键单击表,脚本 - 创建。
答案 3 :(得分:9)