2011-03-02 50 views
5

當我在PostgreSQL中創建一個表,我用的是SQL看起來是這樣的:反正有出口PostgreSQL架構濃縮?

CREATE TABLE domain (
    id serial, 
    domain character varying(60) NOT NULL, 
    banned boolean, 
    created timestamp NOT NULL 
); 

然而,當我出口的模式,我得到一個整體的無壓縮版本與喜歡誰擁有該表和全序列垃圾。無論如何,如果沒有至少所有者的一部分,就可以獲得出口?

CREATE TABLE domain (
    id integer NOT NULL, 
    domain character varying(60) NOT NULL, 
    banned boolean, 
    created timestamp without time zone NOT NULL 
); 

ALTER TABLE public.domain OWNER TO postgres; 

CREATE SEQUENCE domain_id_seq 
    START WITH 1 
    INCREMENT BY 1 
    NO MAXVALUE 
    NO MINVALUE 
    CACHE 1; 

ALTER TABLE public.domain_id_seq OWNER TO postgres; 
ALTER SEQUENCE domain_id_seq OWNED BY domain.id; 
SELECT pg_catalog.setval('domain_id_seq', 3, true); 

最主要的是,我希望能夠通過周圍的模式給別人(誰甚至可能不會使用PostgreSQL),而不必手動編輯該文件並刪除特定於我的數據庫零件用戶。短手也比較容易閱讀。

回答

4

像這樣的事情會得到你的存在方式的一部分:

pg_dump --schema-only  \ 
     --no-owner   \ 
     --no-privileges  \ 
     --table=$TABLE_NAME \ 
     $DATABASE_NAME 

你仍然在頂部和約束,序列和索引在結束所有SET...東西。

您也許能的

echo "\d $TABLENAME" | psql -d $DATABASE -U $USER 

輸出修改成你想要的腳本的一點點東西。

你也可以在系統表中找到你想要的東西,但這可能比手動切割pg_dump不得不說的中間工作更多的工作。

+0

謝謝,這可能要做。也許,我可以構建一個運行導出的bash腳本 - 然後過濾SQL的內容...... – Xeoncross 2011-03-03 17:53:59