1、ddlx
https://pgxn.org/dist/ddlx/

unzip ddlx-0.29.0.zip -d /home/postgres/
cd /home/postgres/
[postgres@pg16 ~]$ cd ddlx-0.29.0/
make
make install

postgres=# create extension ddlx ;
CREATE EXTENSION

emp=# select ddlx_create('jobs'::regclass);

2、pg_dbms_metadata
github地址:
https://github.com/hexacluster/pg_dbms_metadata/releases
pg_dbms_metadata v1.0.0 发布
发布于 2024-01-05,作者:HexaCluster
PostgreSQL pg_dbms_metadata 扩展
这是一个 PostgreSQL 扩展,用于以与 Oracle DBMS_METADATA 包兼容的方式提取数据库对象的 DDL。
此扩展建立了一种系统的方法,以编程方式检索对象的 DDL。
现在,您可以灵活地从纯 SQL 查询或 PL/pgSQL 代码生成对象的 DDL。
实现了以下函数和存储过程
● GET_DDL() 此函数提取指定对象的 DDL。
● GET_DEPENDENT_DDL() 此函数提取指定基本对象的所有指定类型依赖对象的 DDL。
● GET_GRANTED_DDL() 此函数提取用于为指定被授权者重新创建授权权限和角色的 SQL 语句。
● SET_TRANSFORM_PARAM() 此过程用于通过配置会话级转换参数来自定义 DDL。
链接
下载 https://github.com/hexacluster/pg_dbms_metadata/releases
支持 https://github.com/hexacluster/pg_dbms_metadata/issues
文档 https://github.com/hexacluster/pg_dbms_metadata#readme
[postgres@pg16 soft]$ tar -zxvf pg_dbms_metadata-1.0.0.tar.gz -C /home/postgres/
[postgres@pg16 ~]$ cd pg_dbms_metadata-1.0.0/
[postgres@pg16 pg_dbms_metadata-1.0.0]$ make install --直接安装即可

Test of the extension can be done using below command. Before running the tests, ensure that your PostgreSQL service is running:
sudo make installcheck

Note: If you don’t want to create an extension for this, you can simply import the SQL file and use the complete functionality:
psql -d mydb -c "CREATE SCHEMA dbms_metadata;"
psql -d mydb -f sql/pg_dbms_metadata--1.0.0.sql
--------------------------------------------------
psql -d emp -c "CREATE SCHEMA dbms_metadata;"
psql -d emp -f sql/pg_dbms_metadata--1.0.0.sql
Manage the extension
Each database that needs to use pg_dbms_metadata must creates the extension:
psql -d emp -c "CREATE EXTENSION pg_dbms_metadata"
To upgrade to a new version execute:
psql -d emp -c 'ALTER EXTENSION pg_dbms_metadata UPDATE TO "1.1.0"'
Functions
GET_DDL
This function extracts DDL of database objects.
Below is list of currently supported object types. To get a ddl of a check constraint, unlike Oracle you need to use CHECK_CONSTRAINT object type. In Oracle, we will use the CONSTRAINT object type to get ddl of a check constraint.
● TABLE
● VIEW
● SEQUENCE
● PROCEDURE
● FUNCTION
● TRIGGER
● INDEX
● CONSTRAINT
● CHECK_CONSTRAINT
● REF_CONSTRAINT
● TYPE
Syntax:
dbms_metadata.get_ddl (
object_type IN text,
name IN text,
schema IN text DEFAULT NULL)
RETURNS text;
示例,看下效果,也还行。
psql -d emp -c 'SELECT dbms_metadata.get_ddl('TABLE','employees','emp');'

以下是 kingbase 自己兼容Oracle的 dbms_metadata,看下效果,显示好像接近于ddlx,金昌的这个功能也是很强大的


文章有误大家批评指正
最后修改时间:2025-07-03 14:25:02
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




