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 !!!