ダンプリストア時のパージオプション

(8.0.22)

-- テストオブジェクト準備
drop table tab1;
create table tab1(col1 int primary key);
insert into tab1 values(1);
select * from tab1;

drop view view1;
create view view1 as select * from tab1;


drop function func1;
create function func1() returns decimal deterministic
return 0;


drop procedure proc1;
delimiter //
create procedure proc1()
begin
  commit;
end//
delimiter ;

 

show tables;
select * from tab1;

select routine_schema, routine_name, routine_type
from information_schema.routines
where  routine_schema = database()
and routine_type in ('FUNCTION','PROCEDURE')
;

-- 動作確認

mysqldump -u root --quick --master-data=2 --flush-logs --single-transaction --triggers --routines --events --add-drop-database --databases test > bkup01.sql
mysql < bkup01.sql
対象DBは必ず再作成される

mysqldump -u root --quick --master-data=2 --flush-logs --single-transaction --triggers --routines --events                     --databases test > bkup02.sql
mysql < bkup02.sql
対象DBはなければ作成される

mysqldump -u root --quick --master-data=2 --flush-logs --single-transaction --triggers --routines --events                                 test > bkup03.sql
mysql test < bkup03.sql
対象DBは作成されない
リストア対象DBに接続する必要あり


MySQLは接続しているDBに対してdrop database発行可能
デフォルトで--add-drop-tableがonとなっておりオブジェクトは常に再作成される

 

(19c)

-- テストオブジェクト準備
drop table tab1 purge;
create table tab1(col1 int primary key);
insert into tab1 values(1);
commit;
select * from tab1;

drop view view1;
create view view1 as select * from tab1;

drop sequence seq1;
create sequence seq1;

create or replace function func1 return number as
begin
  return 0;
end;
/

create or replace procedure proc1 as
begin
  commit;
end;
/

select table_name from user_tables;
select * from tab1;
select view_name from user_views;
select sequence_name from user_sequences;
select object_name,object_type from user_objects where object_type in ('FUNCTION','PROCEDURE');

-- 動作確認

expdp test/test@pdb1 directory=ORA_DIR dumpfile=a.dmp logfile=a.log schemas=test reuse_dumpfiles=yes

impdp test/test@pdb1 directory=ORA_DIR dumpfile=a.dmp logfile=a.log schemas=test table_exists_action=replace

ORA-31684: オブジェクト型USER:"TEST"はすでに存在します
ORA-31684: オブジェクト型SEQUENCE:"TEST"."SEQ1"はすでに存在します
ORA-31684: オブジェクト型FUNCTION:"TEST"."FUNC1"はすでに存在します
ORA-31684: オブジェクト型PROCEDURE:"TEST"."PROC1"はすでに存在します
ORA-31684: オブジェクト型VIEW:"TEST"."VIEW1"はすでに存在します

テーブル以外はパージオプションが存在せずインポート時に警告エラーとなる

(13)

-- テストオブジェクト準備
drop table tab1;
create table tab1(col1 int primary key);
insert into tab1 values(1);
select * from tab1;

drop view view1;
create view view1 as select * from tab1;

drop sequence seq1;
create sequence seq1;

drop function func1();
create function func1() returns numeric as $$
begin
  return 0;
end;
$$ language plpgsql;

drop procedure proc1();
create procedure proc1() as $$
begin
  commit;
end;
$$ language plpgsql;

\dt
select * from tab1;
\ds
\df

-- 動作確認

[1] テキストダンプの場合

pg_dump -Fp --clean --create test > bkup01.sql
psql postgres < bkup01.sql
リストア対象DB以外に接続する必要あり

pg_dump -Fp --clean          test > bkup02.sql
psql test < bkup02.sql
リストア対象DBに接続する必要あり

pg_dump -Fp         --create test > bkup03.sql
psql postgres < bkup03.sql
リストア対象DB以外に接続する必要あり
リストア前に対象DBを削除する必要あり

pg_dump -Fp                  test > bkup04.sql
psql test < bkup04.sql
リストア対象DBに接続する必要あり
リストア前に対象DBを再作成する必要あり


[2] バイナリダンプの場合

pg_dump -Fc test > bkup11.dmp

pg_restore --clean --create -d postgres  bkup11.dmp
リストア対象DB以外に接続する必要あり

pg_restore --clean          -d test  bkup11.dmp
リストア対象DBに接続する必要あり

pg_restore          --create -d postgres  bkup11.dmp
リストア対象DB以外に接続する必要あり
リストア前に対象DBを削除する必要あり

pg_restore                   -d test  bkup11.dmp
リストア対象DBに接続する必要あり
リストア前に対象DBを再作成する必要あり

 

(2019)

bcpコマンドは対象がテーブルのみでパージオプションなし