PG获取DDL建表语句的方法

2023-07-05 11:06:18 浏览数 (2)

PG中获取表结构不像MySQL那样show create table xxx G 那么便捷。

1、pg_dump获取表结构

2、使用第三方的插件

这里介绍下插件的使用方法,具体如下:

代码语言:javascript复制
项目地址: https://github.com/lacanoid/pgddl

# 安装插件(我这里使用的是编译安装方式)
cd postgresql-14.0/contrib
unzip pgddl-master.zip
cd pgddl-master

export PG_CONFIG=/usr/local/pgsql-14.0/bin/pg_config
make
make install


=# c dbatest
=# create extension ddlx;

-- 提取建库语句

=# SELECT ddlx_create(oid) FROM pg_database WHERE datname=current_database();
                     ddlx_create                     
─────────────────────────────────────────────────────
 CREATE DATABASE dbatest WITH                       ↵
   ENCODING = UTF8                                  ↵
   LC_COLLATE = "en_US.UTF-8"                       ↵
   LC_CTYPE = "en_US.UTF-8";                        ↵
                                                    ↵
 ALTER DATABASE dbatest SET TABLESPACE pg_default;  ↵
                                                    ↵
 COMMENT ON DATABASE dbatest IS NULL;               ↵
                                                    ↵
 ALTER DATABASE dbatest WITH ALLOW_CONNECTIONS true;↵
 ALTER DATABASE dbatest WITH IS_TEMPLATE false;     ↵
 
(1 row)

=# dt 
                                          List of relations
 Schema │      Name       │ Type  │  Owner   │ Persistence │ Access method │    Size    │ Description 
────────┼─────────────────┼───────┼──────────┼─────────────┼───────────────┼────────────┼─────────────
 public │ pgbench_tellers │ table │ dts      │ permanent   │ heap          │ 0 bytes    │ 
 public │ users           │ table │ postgres │ permanent   │ heap          │ 8192 bytes │ 
(2 rows)

-- 提取建表语句

=# SELECT ddlx_script('users') ;
                  ddlx_script                  
───────────────────────────────────────────────
 BEGIN;                                       ↵
                                              ↵
 /*                                           ↵
 DROP TABLE users; -- !!!ATTENTION!!! --      ↵
 */                                           ↵
                                              ↵
 -- Type: TABLE ; Name: users; Owner: postgres↵
                                              ↵
 CREATE TABLE users (                         ↵
     id integer NOT NULL,                     ↵
     name text                                ↵
 );                                           ↵
                                              ↵
 COMMENT ON TABLE users IS NULL;              ↵
                                              ↵
 ALTER TABLE users ADD CONSTRAINT users_pkey  ↵
   PRIMARY KEY (id);                          ↵
                                              ↵
                                              ↵
 END;                                         ↵
 
(1 row)


不足: 目前遇到的问题,  它不能提取出 sequence !!!

0 人点赞