簡體   English   中英

將表結構復制到新表中

[英]Copy table structure into new table

有沒有辦法將表的結構復制到新表中,沒有數據,包括所有鍵和約束?

對於簡單的模式復制,請使用 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”)。

問題實際上是:你為什么需要它 - 因為出於各種目的,我會使用不同的技術。

要完全復制表,也可以使用使用 TABLE 命令的簡短格式:

CREATE TABLE films2 AS
    TABLE films
    WITH NO DATA;

更多細節 在這里

看看pgAdmin - 迄今為止做你想做的最簡單的方法。
右鍵單擊表,腳本 - 創建。

怎么樣

CREATE TABLE sample_table_copy AS (SELECT * FROM sample_table WHERE 1 = 2)

postgresql.org 答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM