在pg_restore期间排除表

时间:2016-05-04 21:17:17

标签: postgresql pg-restore

更新 能够在pg_dump命令中排除表中的数据。比尝试不加载数据更快,因为您不必等待转储数据。

--exclude-table-data=event_logs

(PostgreSQL) 9.4.4

任何人都知道在执行pg_restore时如何排除表格?我可以在执行pg_dump时找到该怎么做。但是,我不是那个进行转储的人,也不能排除它们。

转储中有2个表非常大,当我进行恢复时会永远占用,所以我想跳过它们。

4 个答案:

答案 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