【发布时间】:2013-12-19 06:01:03
【问题描述】:
我正在执行如下 pg_dump 命令:
/Library/PostgreSQL/8.4/bin/pg_dump --host localhost --port 5432 --username xxx --format plain --clean --inserts --verbose --file /Users/xxx/documents/output/SYSTEM_admin_20131203101809.sql --exclude-table public.dbmirror_mirroredtransaction --exclude-table public.dbmirror_mirrorhost --exclude-table public.dbmirror_pending --exclude-table public.dbmirror_pendingdata --exclude-table public.mdflog --exclude-table public.fcpersistentstore --exclude-table public.backup_restore --exclude-table public.mdflogeventcode testdb
我遇到的问题是,在创建的普通 sql 文件中,它添加了一个命令来尝试并 DROP 整个 PUBLIC 架构,如以下 sn-p 所示:
...
DROP FUNCTION public.f_updateeventlog();
DROP FUNCTION public.f_updateadmindata();
DROP PROCEDURAL LANGUAGE plpgsql;
DROP SCHEMA public;
CREATE SCHEMA public;
ALTER SCHEMA public OWNER TO postgres;
COMMENT ON SCHEMA public IS 'standard public schema';
...
我确实想删除我提供的排除表参数中未排除的所有其他对象,但我不希望它删除架构。
我尝试将架构添加为排除表参数,但没有奏效。
我正在为 pg_dump 使用 Postgresql 8.4。
编辑:我想更新这个问题并说我相信不可能让 pg_dump 以纯格式排除 DROP / CREATE 公共命令。我相信您必须使用自定义格式,然后使用 pg_restore 才能阻止这种情况发生。当我使用 psql 来恢复和使用纯格式的 pg_dump 时,我只是在它作为我正在创建的 Java 进程的一部分自动创建后从 sql 文件中删除我不想要的命令,我可以解决这个问题。如果有人确实找到了这样做的方法,我会留下这个问题。
【问题讨论】:
标签: postgresql pg-dump