在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

原文地址:https://www.cnblogs.com/mq0036/p/12410563.html