📜  PostgreSQL – 复制表

📅  最后修改于: 2022-05-13 01:57:15.859000             🧑  作者: Mango

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;

这将导致以下结果: