我正在編寫自己的腳本來保存用於版本控制的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客戶端工具都可以做到這一點。 –