[英]Exclude Table during pg_restore
更新:能夠在 pg_dump 命令期間排除表中的數據。 比嘗試不加載數據更快,因為您不必等待數據被轉儲。
--exclude-table-data=event_logs
(PostgreSQL) 9.4.4
有人知道如何在執行pg_restore
時排除表嗎? 我可以在執行pg_dump
時找到如何做到這一點。 但是,我不是進行轉儲的人,也不能排除它們。
轉儲中有 2 個表,它們非常大,並且在我進行恢復時需要花費很長時間,所以我想跳過它們。
我有同樣的問題。 一個長表列表,我想從幾個表中排除數據。
我所做的是以下內容:
運行
pg_restore -l $pgdump_file > restore.pgdump.list
在編輯器中打開該restore.pgdump.list
文件,並插入一個;
在行前說
;2429; 0 27550 TABLE DATA public <table_to_explore> <database>
保存該文件后,它現在可以用於導入,其中所有行都以;
開頭;
被忽略。
pg_restore -L restore.pgdump.list | psql
你可以做一個單行添加;
在具有特定表名的行之前,如果您完全想忽略特定表。
man pg_restore
也在文檔末尾的示例中講述了這一點。
TL;DR 單線
pg_restore -L <(pg_restore -l /path/to/db/dump | grep -v 'TABLE DATA public table_to_ignore') -d db_name_where_to_restore /path/to/db/dump
以下返回還原的“待辦事項列表”:
pg_restore -l /path/to/db/dump
以下將返回除table_to_ignore
之外的所有table_to_ignore
( grep
選項-v
使其反向匹配):
pg_restore -l /path/to/db/dump | grep -v 'TABLE DATA public table_to_ignore'
這可以與pg_restore
選項-L
結合使用,該選項需要輸入待辦事項列表:
pg_restore -L <(pg_restore -l /path/to/db/dump | grep -v 'TABLE DATA public table_to_ignore') -d db_name_where_to_restore /path/to/db/dump
如果你有幾個表要忽略,你可以 grep 到:
pg_restore -l /path/to/db/dump | grep -vE 'TABLE DATA public (table_1|table_2|table_3)'
請注意-E
選項的存在,用於grep
使用擴展的正則表達式。
pg_restore沒有排除表參數,它有一個包含表參數。
-t 表
--table=table
僅恢復命名表的定義和/或數據。 可以使用多個 -t 開關指定多個表。 這可以與 -n 選項結合使用來指定模式。
如果您有大量表格,它確實需要一點點輸入,但它確實允許您通過將特定表格的名稱排除在列表之外來排除它們。
這里命令不起作用:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.