更新 能够在pg_dump命令中排除表中的数据。比尝试不加载数据更快,因为您不必等待转储数据。
--exclude-table-data=event_logs
(PostgreSQL) 9.4.4
任何人都知道在执行pg_restore
时如何排除表格?我可以在执行pg_dump
时找到该怎么做。但是,我不是那个进行转储的人,也不能排除它们。
转储中有2个表非常大,当我进行恢复时会永远占用,所以我想跳过它们。
答案 0 :(得分:38)
我遇到了同样的问题。一个长表列表,我想从几个表中排除数据。
我做的是以下内容:
运行
restore.pgdump.list
在编辑器中打开;
文件,然后在行前插入;2429; 0 27550 TABLE DATA public <table_to_explore> <database>
;
保存该文件后,现在可以将其用于导入,其中忽略以pg_restore -L restore.pgdump.list | psql
开头的所有行。
;
如果您完全想忽略特定的表格,可以在具有特定表格名称的行前面添加man pg_restore
。
curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6
也在文档末尾的示例中说明了这一点。
答案 1 :(得分:4)
pg_restore没有排除表参数,它具有的是include表参数。
-t table
- 表=表
仅恢复指定表的定义和/或数据。可以使用多个-t开关指定多个表。这个可以 与-n选项结合使用以指定模式。
如果你有大量的表,它确实要求输入一点点,但它确实允许你通过将它们的名字从列表中删除来排除特定的表。
答案 2 :(得分:1)
此命令无效:
pg_restore -L restore.pgdump.list | psql
由Jesper Grann Laursen回答!
在此按以下顺序进行工作:
pg_restore -l $pgdump_file > restore.pgdump.list
;2429; 0 27550 TABLE DATA public <table_to_explore> <database>
pg_restore -v -L restore.pgdump.list -d dbname pgdump.file
答案 3 :(得分:0)
根据其他答案,这里是单线:
pg_restore -L <(pg_restore -l ~/base.bck | grep -ivE 'TABLE DATA public (exclude_tbl_name|exclude_tbl_name_2|exclude_tbl_name_3)') -d base_truncated ~/base.bck