广告位联系
返回顶部
分享到

PostgreSQL复制表的5种方法

数据库其他 来源:互联网 作者:佚名 发布时间:2023-01-22 10:05:37 人浏览
摘要

PostgreSQL 提供了多种不同的复制表的方法,它们的差异在于是否需要复制表结构或者数据。 CREATE TABLE AS SELECT 语句 CREATE TABLE AS SELECT 语句可以用于复制表结构和数据,但是不会复制索引

PostgreSQL 提供了多种不同的复制表的方法,它们的差异在于是否需要复制表结构或者数据。

CREATE TABLE AS SELECT 语句

CREATE TABLE AS SELECT 语句可以用于复制表结构和数据,但是不会复制索引。

我们可以使用以下语句基于 employee 复制一个新表 emp2,包括表中的数据:

1

2

3

CREATE TABLE emp2

AS

SELECT * FROM employee;

如果只想要复制表结构,不复制数据,可以增加 WITH NO DATA 子句:

1

2

3

4

CREATE TABLE emp2

AS

SELECT * FROM employee

WITH NO DATA;

或者也可以使用一个不返回任何结果的查询语句,例如:

1

2

3

4

CREATE TABLE emp2

AS

SELECT * FROM employee

WHERE FALSE;

这种复制方法不会创建任何索引或者约束,例如主键、外键以及 NOT NULL 约束等。

CREATE TABLE LIKE 语句

CREATE TABLE LIKE 语句也可以用于复制表结构:

1

2

CREATE TABLE emp3

(LIKE employee);

语法中的括号是必不可少的,而且这种方法不会复制数据,但是会复制字段的 NOT NULL 约束。

CREATE TABLE AS TABLE 语句

CREATE TABLE AS TABLE 语句可以复制表结构和数据,例如:

1

2

3

4

CREATE TABLE emp4

AS

TABLE employee

WITH NO DATA;

这种语法不会复制索引、外键以及非空约束等。

如果不需要复制数据,可以使用 WITH NO DATA 子句:

1

2

3

4

CREATE TABLE emp4

AS

TABLE employee

WITH NO DATA;

SELECT INTO 语句

SELECT INTO 语句可以复制表结构和数据,但是不包含索引等。例如:

1

SELECT * INTO emp5 FROM employee;

PostgreSQL 推荐使用 CREATE TABLE AS 替代 SELECT INTO 语句实现类似效果,因为前者适用性更广,功能更全。

CREATE TABLE INHERITS 语句

PostgreSQL 支持 CREATE TABLE 语句的 INHERIT 子句,用于继承表结构。这种复制表的方法和其他方法有所区别,任何针对父表的修改通常也会自动修改子表。

另外,这种方法还可以为子表定义额外的字段。例如:

1

2

3

4

CREATE TABLE emp5 (

    notes text NOT NULL

)

INHERITS ( employee );

其中,notes 是我们额外定义的字段,其他字段继承 employee。

使用 psql \d 命令查看 emp5 的结构如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

\d emp5

 

                        Table "public.emp5"

  Column   |          Type          | Collation | Nullable | Default

-----------+------------------------+-----------+----------+---------

 emp_id    | integer                |           | not null |

 emp_name  | character varying(50)  |           | not null |

 sex       | character varying(10)  |           | not null |

 dept_id   | integer                |           | not null |

 manager   | integer                |           |          |

 hire_date | date                   |           | not null |

 job_id    | integer                |           | not null |

 salary    | numeric(8,2)           |           | not null |

 bonus     | numeric(8,2)           |           |          |

 email     | character varying(100) |           | not null |

 notes     | text                   |           | not null |

Check constraints:

    "ck_emp_salary" CHECK (salary > 0::numeric)

    "ck_emp_sex" CHECK (sex::text = ANY (ARRAY['男'::character varying, '女'::character varying]::text[]))

Inherits: employee


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/horses/article/details/128697909
相关文章
  • 六大主流数据同步工具对比:DataX、Airbyte、Cana
    当数据量变大、数据源复杂、实时需求提高,很多团队在选数据同步工具时犯难。本文对 DataX、Airbyte、Canal、Debezium、Fivetran 与 Apache SeaTun
  • 解读SQL生成工具
    SQL 生成工具可用于测试Parser与其他数据库产品的兼容性,通过解析YACC语法文件中的产生式,生成对应的SQL语句,再使用数据库执行该SQL,根
  • SQLite3在嵌入式C环境中存储音频/视频文件的最优

    SQLite3在嵌入式C环境中存储音频/视频文件的最优
    SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案 在嵌入式系统中存储大型媒体文件需要平衡存储效率、访问速度和资源限制。以下是针
  • 嵌入式数据库SQLite 3配置使用

    嵌入式数据库SQLite 3配置使用
    0、惨痛教训 随着管理开发的项目体积越来越庞大,产品系统涉及的数据量也越来越多,并且伴随着项目不久就要交付给甲方了。如果项目的
  • Sqlite3基本语句及安装过程

    Sqlite3基本语句及安装过程
    SQLite3简介 SQLite3是一款轻量级的、基于文件的开源关系型数据库引擎,由 D. Richard Hipp 于 2000 年首次发布。它遵循 SQL 标准,但与传统的数据
  • 在SQLite中进行批量操作的有效实现方法
    SQLite 是一个轻量级的关系型数据库管理系统,因其高效性和易用性而广受欢迎。在许多应用场景中,批量操作的需求是不可避免的,例如在
  • 一文介绍在Hive中NULL的理解
    在 Hive 中,NULL 是一个特殊的值,表示未知或缺失。任何与NULL的比较操作(如=,,,=,=,)都会返回NULL,而不是TRUE或FALSE。 1.NULL 的比较规则 在
  • Navicat Premium 12数据库管理解决方案

    Navicat Premium 12数据库管理解决方案
    Navicat Premium 12是一款全面的数据库管理工具,支持多种数据库系统如MySQL、MariaDB、Oracle、SQL Server、PostgreSQL等。它提供了多数据库连接、数据
  • sqlite3命令行工具使用介绍
    一、启动与退出 启动数据库连接 1 2 3 sqlite3 [database_file] # 打开/创建数据库文件(如 test.db) sqlite3 # 启动临时内存数据库 (:memory:) sqlite3 :m
  • StarRocks简介与搭建使用介绍

    StarRocks简介与搭建使用介绍
    StarRocks简介 StarRocks 是一款高速、实时、全场景的MPP(大规模并行处理)分析型数据库系统,专为现代数据分析场景设计,强调亚秒级查询性
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计