本文介紹針對不同數據庫對應的建表語句的獲取方法。
背景說明
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為例: