我正在编写自己的脚本来保存用于版本控制的PostgreSQL数据库模式(包括视图,函数等)。例如,我发现这种方式从数据库中获取的功能名称和定义:在查询中获取CREATE TABLE定义
SELECT P.proname, pg_get_functiondef(P.oid)
FROM pg_proc P
LEFT JOIN pg_language L ON P.prolang=L.oid
WHERE P.pronamespace='public' AND (L.lanname='sql' OR L.lanname='plpgsql')
ORDER BY proname, proargnames, proargtypes
然而,试图让表定义为CREATE TABLE
声明似乎没有那么简单。我已经寻找它,和所有我能找到的是使用pg_dump
,这不是我想要的,因为:
- 这意味着我必须从我的(Python)的脚本
exec
东西。 - 它增加了所有我不想要的东西。
是否有另外一种方法获取CREATE TABLE
声明? (基本上像MySQL中的DESCRIBE <table>
)
不幸的是'psql'没有这样的功能,但是大多数的GUI客户端工具都可以做到这一点。 –