在Oracle中使用SQL語句備份單表-造數據-還原表


在網上找來的語句備份單表的情況。提供參考

--不影響日后工作的造數據步驟:
--1、備份表內的內容,
--2、清表內內容,
--3、給表造數據,
--4、還原表
------------------------------------------------------------
--1、備份表內的內容,
--create table <庫名2>.<表名2> as select * from <庫名1>.<表名1>;
--根據表1創建表2,表2的字段和數據都和表1一樣.可用於在不同的庫之間進行創建
--若只需要表頭不需要表數據的話,用create table <庫名2>.<表名2> as select * from <庫名1>.<表名1> where 1=0;
create table userinfo.clientinfo_2 as select * from userinfo.clientinfo_1;
------------------------------------------------------------
--2、清表內內容,
--delete <庫名>.<表名>; 
--刪掉一整個表內的數據
delete userinfo.clientinfo_1;
------------------------------------------------------------
--3、給表造數據,
--新建一個Test Window,寫語句如下:
-- Created on 2017-03-22 by ZHOUKY16712 
declare 
  -- Local variables here
  --在declare下面定義一些參數
  i integer;--定義i為整型
  v_client_id varchar(20);--參數客戶號為20位的字符串
  v_client_name varchar(50);--參數客戶姓名為50位的字符串
  v_client_age integer;--參數客戶年齡為整型
begin
  -- Test statements here
  --在begin后面開始寫執行語句
 for i in 1..20 --將i從1運行到20,進行循環
 loop 
--********************************************--
--lpad(i, 6, '0')表示一個6位的字符串,以i的值結尾,前面以0補充
--||表示拼接,'1'||<字符串>表明在字符串前拼接字符'1'
--故全部循環結束后,v_client_id 值為1000001到1000020
--********************************************--
  v_client_id  := '1'||lpad(i, 6, '0');
  v_client_name :='zky';--名字賦值為zky
  v_client_age:=18;--年齡為18
  
  --給表插入數據
  --insert into<庫名>.<表名> VALUES(<字段值>,<字段值>);這種的話是依次將值挨個傳入字段內,
  --insert into<庫名>.<表名> (<字段名>,<字段名>) VALUES(<字段值>,<字段值>);這種是可以跳躍將值傳進字段里
  insert into userinfo.clientinfo_1 values(v_client_id,v_client_name,v_client_age); 
  end loop;--循環結束
  commit; 
end;  
------------------------------------------------------------ 
--4、還原表
delete  userinfo.clientinfo_1 ;
insert into userinfo.clientinfo_1 select * from userinfo.clientinfo_2 --把表2數據復制到表1去
drop table userinfo.clientinfo_2--把用來備份的表2刪掉。

 

 

出處:https://blog.csdn.net/zhouky1993/article/details/65449548


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM