[英]Postgres backup and overwrite one table
我有一個 postgres 數據庫,我正在嘗試使用以下內容備份表:
pg_dump --data-only --table=<table> <db> > dump.sql
然后幾天后,我試圖通過以下方式覆蓋它(基本上是想刪除所有數據並從我的轉儲中添加數據):
psql -d <db> -c --table=<table> < dump.sql
但它不會覆蓋,它會在不刪除現有數據的情況下添加它。
任何建議都會很棒,謝謝!
您基本上有兩種選擇,具體取決於您的數據和 fkey 約束。
如果表沒有 fkeys,那么最好的辦法是在加載之前截斷表。 請注意,truncate 在事務中的表現有點奇怪,所以最好的做法是(在事務塊中):
這將避免其他事務看到空表。
如果您有 fkeys,那么您可能希望加載到臨時表中,然后執行更新插入。 在這種情況下,如果其他事務可能想要寫入表(也在事務塊中),您可能仍然希望鎖定表以避免競爭條件:
第 3 階段有點棘手。 您可能需要提出一個單獨的問題,但基本上您將有兩個階段(並與文檔協商編寫):
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.