提要:在本教程中,我们将逐步向您展示如何使用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','[email protected]'), ('David','William','[email protected]');
要将 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);