PostgreSQL – 复制表
PostgreSQL 允许使用各种形式的 PostgreSQL 复制表语句复制现有的表,包括表结构和数据。要完全复制表,包括表结构和数据,请使用以下语句。
Syntax:
CREATE TABLE new_table AS
TABLE existing_table;
要复制没有数据的表结构,用户需要在 CREATE TABLE 语句中添加 WITH NO DATA 子句,如下所示:
Syntax:
CREATE TABLE new_table AS
TABLE existing_table
WITH NO DATA;
要从现有表中复制包含部分数据的表,用户可以使用以下语句:
Syntax:
CREATE TABLE new_table AS
SELECT
*
FROM
existing_table
WHERE
condition;
查询的 WHERE 子句中的条件定义了现有表的哪些行将被复制到新表中。
注意:以上所有语句复制表结构和数据,但不复制现有表的索引和约束。
例子:
使用以下语句为演示创建一个名为contacts
CREATE TABLE contacts(
id SERIAL PRIMARY KEY,
first_name VARCHAR NOT NULL,
last_name VARCHAR NOT NULL,
email VARCHAR NOT NULL UNIQUE
);
现在让我们使用以下语句contacts
INSERT INTO contacts(first_name, last_name, email)
VALUES('Raju', 'Kumar', 'rajukumar@gmail.com'),
('Nikhil', 'Aggarwal', 'nikhil@gmail.com');
要将contacts
复制到新表(例如, contacts_backup
表),请使用以下语句:
CREATE TABLE contact_backup
AS TABLE contacts;
要验证上述内容,请使用以下语句:
SELECT * FROM contact_backup;
输出:
我们还可以使用以下命令检查 contact_backup 表的数据类型和结构:
\d contact_backup;
这将导致以下结果: