在Postgresql上以编程方式生成DDL

在Postgresql上以编程方式生成DDL,postgresql,ddl,Postgresql,Ddl,如何在Postgresql上以编程方式生成表的DDL?是否有系统查询或命令来执行此操作?用谷歌搜索该问题没有返回任何指针。您可以使用该命令转储数据库的内容(架构和数据)。--schema only开关将仅转储表的DDL。答案是检查pg_dump的源代码,并遵循它用于生成DDL的开关。在代码中的某个地方,有许多查询用于检索用于生成DDL的元数据。为什么向psql输出不算作“以编程方式”呢?它会很好地转储整个模式 无论如何,您可以从(此处引用的8.4文档,但这不是新功能)中获取数据类型(以及更多):

如何在Postgresql上以编程方式生成表的DDL?是否有系统查询或命令来执行此操作?用谷歌搜索该问题没有返回任何指针。

您可以使用该命令转储数据库的内容(架构和数据)。
--schema only
开关将仅转储表的DDL。

答案是检查pg_dump的源代码,并遵循它用于生成DDL的开关。在代码中的某个地方,有许多查询用于检索用于生成DDL的元数据。

为什么向psql输出不算作“以编程方式”呢?它会很好地转储整个模式

无论如何,您可以从(此处引用的8.4文档,但这不是新功能)中获取数据类型(以及更多):


这是一篇关于如何从信息模式中获取元信息的好文章,
.

使用带有以下选项的
pg\u dump

pg_dump -U user_name -h host database -s -t table_or_view_names -f table_or_view_names.sql
说明:

-s or --schema-only : Dump only ddl / the object definitions (schema), without data.
-t or --table Dump :  Dump only tables (or views or sequences) matching table
示例:

-- dump each ddl table that elon build.
$ pg_dump -U elon -h localhost -s -t spacex -t tesla -t solarcity -t boring > companies.sql
对不起,如果不符合主题。只是想帮助那些通过谷歌搜索“psql dump ddl”并获得此线程的人。

I要模拟
pg_dump-s
行为。基于
\d+
元命令。其用途与smth相同:

\pset format unaligned
select get_ddl_t(schemaname,tablename) as "--" from pg_tables where tableowner <> 'postgres';
\p设置格式未对齐
从tableowner'postgres'所在的pg_表中选择get_ddl_t(schemaname,tablename)作为“-”;
当然,您必须先创建函数


抱歉,需要以编程方式执行此操作。大多数人不会安装pg_转储,也不会使用pg_转储访问服务器。我不太理解你的评论
pg_dump
随PostgreSQL一起安装,可在所有服务器上使用。使用它不需要特殊的用户权限(普通的PostgreSQL访问控制适用于正在转储的数据库)。如果你不认为这是一个程序性的解决方案,你必须指定你正在使用什么样的编程环境才能得到一个合适的答案。正如我上面所说的,我的大多数用户将无法访问PGYDUMP或PostgreSQL服务器,所以我必须复制PGyDimop.Trand的行为。因此,您的代码将查询信息模式(或转换为psql),解析结果,并向用户显示结果;链接经常失效。
\pset format unaligned
select get_ddl_t(schemaname,tablename) as "--" from pg_tables where tableowner <> 'postgres';