2011-03-02 45 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