在 PostgreSQL 中复制一个表

本文介绍了在 PostgreSQL 中复制表的几种方法

在 PostgreSQL 中,您可以使用以下几种方法复制一个表到一个新表:

  1. 使用 CREATE TABLE ... AS TABLE ... 语句复制一个表。
  2. 使用 CREATE TABLE ... AS SELECT ... 语句复制一个表。
  3. 使用 SELECT ... INTO ... 语句复制一个表。

使用 CREATE TABLE ... AS TABLE ... 语句复制一个表

要将已有的 table_name 表复制为新表 new_table,包括表结构和数据,请使用以下语句:

CREATE TABLE new_table
AS TABLE table_name;

如果仅复制表结构,不复制数据,请在以上 CREATE TABLE 语句中添加 WITH NO DATA 子句,如下所示:

CREATE TABLE new_table
AS TABLE table_name
WITH NO DATA;

使用 CREATE TABLE ... AS SELECT ... 语句复制一个表

您还可以使用 CREATE TABLE ... AS SELECT ... 语句复制一个表。 这种方法可以复制部分数据到新表中。

要将已有的 table_name 表复制为新表 new_table,包括表结构和数据,请使用以下语句:

CREATE TABLE new_table AS
SELECT * FROM table_name;

如果您只需要复制部分满足条件的数据,请在 SELECT 语句中添加 WHERE 子句,如下:

CREATE TABLE new_table AS
SELECT * FROM table_name
WHERE contidion;

如果您只需要复制部分列到新表,请在 SELECT 语句中指定要复制的列的列表,如下:

CREATE TABLE new_table AS
SELECT column1, column2, ... FROM table_name
WHERE contidion;

如果您只需要复制表结构,请按如下方式使用 WHERE 子句:

CREATE TABLE new_table AS
SELECT * FROM table_name
WHERE 1 = 2;

这里在 WHERE 子句中使用了一个永远为假的条件。

使用 SELECT ... INTO ... 语句复制一个表

要使用 PostgreSQL SELECT INTO 语句将已有的 table_name 表复制为新表 new_table,请使用以下语法:

SELECT *
INTO new_table
FROM table_name

如果您只需要复制部分满足条件的数据,请添加 WHERE 子句,如下:

SELECT *
INTO new_table
FROM table_name
WHERE contidion;

如果您只需要复制部分列到新表,请在 SELECT 语句中指定要复制的列的列表,如下:

SELECT column1, column2, ...
INTO new_table
FROM table_name
WHERE contidion;

结论

本文阐述了在 PostgreSQL 中复制表的几种方法。注意,这几种方法都只能复制列的定义和数据,都不能将索引复制过去。