本文介绍针对不同数据库对应的建表语句的获取方法。
背景说明
Oracle可以通过DBMS_METADATA.GET_DDL函数获取表的建表语句,但是PolarDB O引擎目前不支持。
解决方案
an-> \d+ t1 Table "public.t1" Column | Type | Collation | Nullable | Default | Storage | Stats target | Description --------+-----------------------+-----------+----------+---------+----------+--------------+------------- id | integer | | | | plain | | name | character varying(30) | | | | extended | | Indexes: "idx1" UNIQUE, btree (id) "idx2" btree (name) Check constraints: "con1" CHECK (id < 2000000) Access method: heap
说明\d+
可以看到表结构,但不是建表语句。- 可以通过创建函数来实现:
psql=#create extension plperlu; postgres=# CREATE OR REPLACE FUNCTION GET_DDL(text) RETURNS text AS 'my $cmd=shift; return `cd /tmp;$cmd`;' LANGUAGE plperlu; CREATE FUNCTION postgres=# select GET_DDL('pg_dump -s -t t1 ddl | egrep -v "^--|^$"'); get_ddl ---------------------------------------------------------------- CREATE TABLE public.t1 ( + id integer, + name character varying(30), + CONSTRAINT con1 CHECK ((id < 2000000)) + ); + ALTER TABLE public.t1 OWNER TO postgres; + CREATE UNIQUE INDEX idx1 ON public.t1 USING btree (id); + CREATE INDEX idx2 ON public.t1 USING btree (name); +
- 您可以在客户端管理工具比如pgadmin,dbeaver查看,以dbeaver为例: