无论如何导出PostgreSQL架构压缩?

时间:2011-03-02 00:20:13

标签: sql postgresql

当我在PostgreSQL中创建一个表时,我使用的SQL看起来像这样:

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),而无需手动编辑文件并删除特定于我的数据库用户的部分。简短的手也更容易阅读。

1 个答案:

答案 0 :(得分: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所说的中间内容更多。