cod*_*rhs 78
对于简单的模式副本,请使用like子句.
CREATE TABLE new_table_name ( like old_table_name including all)
Run Code Online (Sandbox Code Playgroud)
小智 67
那么,您可以使用SQL获得的最接近的是:
create table new (
like old
including defaults
including constraints
including indexes
);
Run Code Online (Sandbox Code Playgroud)
但它不会复制一切.缺少的最重要的东西是FOREIGN KEYs.此外 - 也不会复制触发器.其他事情也不确定.
另一种方法是转储表结构,在转储中更改它的名称,然后再次加载它:
pg_dump -s -t old databases | sed 's/old/new/g' | psql
Run Code Online (Sandbox Code Playgroud)
但请注意,这种简单的sed也会在其他地方将旧的更改为新的(例如,如果您的表列中名为"is_scolded",则它将变为"is_scnewed").
问题实际上是:你为什么需要它 - 因为出于各种目的,我会使用不同的技术.
要完全复制表,还可以使用使用TABLE命令的简短表单:
CREATE TABLE films2 AS
TABLE films
WITH NO DATA;
Run Code Online (Sandbox Code Playgroud)
更多细节在这里
怎么样
CREATE TABLE sample_table_copy AS (SELECT * FROM sample_table WHERE 1 = 2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58685 次 |
| 最近记录: |