pg_dump
コマンド
データのダンプの際には、
- デフォルトでは、
CREATE ○○ IF NOT EXISTS
-
--clean
オプションを指定すると、DROP ○○
してから、CREATE ○○ IF NOT EXISTS
-
--clean --if-exists
オプションを指定すると、DROP ○○ IF EXISTS
してから、CREATE ○○ IF NOT EXISTS
psql
コマンド
リストアの際には、
- デフォルトでは、途中のクエリが失敗しても中断せずに最後までリストアする。
-
--set=ON_ERROR_STOP=1
で途中で失敗したら中断する。DBは途中までリストアされた状態で残る。 -
--single-transaction
オプションを指定すると、シングルトランザクション内でのリストアしてくれる。(途中で失敗すると最初の状態までロールバックする)
冪等にするには
いずれかかな。
-
pg_dump
+psql --single-transaction
-
pg_dump --clean --if-exists
+psql --set=ON_ERROR_STOP=1
-
pg_dump --clean --if-exists
+psql --single-transaction