提要:在本教程中,我们将逐步向您展示如何使用PostgreSQL复制表语句的各种形式来复制包括表结构和数据的现有表。

简介

要完整地复制表(包括表结构和数据),请使用以下语句:

CREATE TABLE new_table AS 
TABLE existing_table;

如果只需要复制表结构而不包含数据,可以将 WITH NO DATA 子句添加到 CREATE TABLE 语句中,如下所示:

CREATE TABLE new_table AS 
TABLE existing_table 
WITH NO DATA;

要使用现有表中的部分数据复制表,请使用以下语句:

CREATE TABLE new_table AS 
SELECT
*
FROM
    existing_table
WHERE
    condition;

示例

首先,创建一个表:

CREATE TABLE contacts(
    id SERIAL PRIMARY KEY,
    first_name VARCHAR NOT NULL,
    last_name VARCHAR NOT NULL,
    email VARCHAR NOT NULL UNIQUE
);

往这张表插入一些数据:

INSERT INTO contacts(first_name, last_name, email) 
VALUES('John','Doe','john.doe@sjk66.com'),
      ('David','William','david.william@sjk66.com');

要将 contacts 表复制到 contact_backup 表,请使用下面的语句——结构和数据同时复制:

CREATE TABLE contact_backup 
AS TABLE contacts;

PostgreSQL 并不会复制主键和唯一约束,需要手动添加:

ALTER TABLE contact_backup ADD PRIMARY KEY(id);
ALTER TABLE contact_backup ADD UNIQUE(email);