Postgres 12中,能否从表定义或信息模式获取CREATE AS SELECT建表语句?
在PostgreSQL 12中无法直接获取CTAS建表的完整SELECT语句
- 用
CREATE TABLE ... AS SELECT(简称CTAS)创建表t1后,PostgreSQL不会保存原始的SELECT查询语句,只会存储最终生成的表结构信息(列名、数据类型、约束等)。 - 不管是查看表的定义,还是查询
information_schema或pg_catalog下的系统表(比如pg_class、pg_attribute),都只能获取表的元数据(比如列属性、所有者、表空间),找不到创建时用到的关联查询、过滤条件等内容。 - 如果需要留存这类建表语句,建议提前通过以下方式处理:
- 手动保存执行前的脚本文件
- 开启PostgreSQL的日志功能,记录所有执行的DDL语句
- 用版本控制系统管理数据库脚本
内容的提问来源于stack exchange,提问作者wing_man
相关产品推荐
相关产品推荐

