Oracle清空資料庫中資料表資料的方法

2021-09-24 04:51:37 字數 2483 閱讀 5261

最近在專案發版測試的時候,匯出dmp的時候不小心把開發庫中的一些髒資料匯出來了,測試那邊匯入進去之後一堆不規範的資料,為了不影響測試結果,於是總結了乙個快速清空資料庫資料表所有資料的方法。

(1). 第一種方法:分步驟實現

【a】第一步:禁止所有的外來鍵約束.

開啟plsql ,新建乙個查詢視窗,輸入:

select 'alter table ' || table_name || ' disable constraint ' ||

constraint_name || ';'

from user_constraints

where constraint_type = 'r';

開啟能執行sql的視窗即可

【b】第二步:用delete或truncate刪除所有表的內容

【c】第三步:啟用所有的外來鍵約束

依次執行完這三個步驟之後,發現資料庫中所有的資料表的資料都清空。

(2).第二種方法:執行指令碼生成的sql,然後統一執行

【a】開啟plsql查詢視窗,執行如下plsql指令碼

begin

dbms_output.put_line('--禁用外來鍵sql【開始】');

for var1 in (select 'alter table ' || table_name || ' disable constraint ' ||

constraint_name || ';' as sqltext

from user_constraints

where constraint_type = 'r') loop

dbms_output.put_line(var1.sqltext);

end loop;

dbms_output.put_line('--禁用外來鍵sql【結束】');

dbms_output.new_line;

dbms_output.put_line('--刪除表記錄sql【開始】');

for var1 in (select 'delete from ' || table_name || ';' as sqltext

from user_tables

order by table_name) loop

dbms_output.put_line(var1.sqltext);

end loop;

dbms_output.put_line('--刪除表記錄sql【結束】');

dbms_output.new_line;

dbms_output.put_line('--啟用外來鍵sql【開始】');

for var1 in (select 'alter table ' || table_name || ' enable constraint ' ||

constraint_name || ';' as sqltext

from user_constraints

where constraint_type = 'r') loop

dbms_output.put_line(var1.sqltext);

end loop;

dbms_output.put_line('--啟用外來鍵sql【結束】');

dbms_output.new_line;

end;

【b】然後在output這個tab中複製出所有的sql

【c】統一執行sql:

推薦使用第二種方法,更加簡單方便,但是如果在生產環境中的話,凡是涉及到刪除資料的都要謹慎操作,防止使用者的資料丟失,如果大家在有需要清空資料的時候可以考慮使用該方法。

資料庫清空表

常用的清空資料表的sql語句有如下兩種 delete from 表名 truncate table 表名 執行測試 我使用的是mysql待測試的表有20000條記錄,將其多拷兩份以備測試 分別執行兩個清空表的sql語句 從結果可以看出兩條語句都可以達到清空表的目的,而兩者的區別是 truncate的...

Oracle資料庫 資料表操作實戰

1 使用sql plus建立dept 系部 表和class 班級 表,表結構如下圖所示。建立dept表 建立class表 create table class class id char 5 primary key,class name varchar2 30 unique dept id char...

清空資料庫所有表資料

清空資料庫所有表資料 exec sp msforeachtable truncate table 查詢資料庫所有表名 select name from sysobjects where type u 游標 清空所有表資料 declare tablename varchar 50 declare sq...