欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

sql-批量插入数据脚本

程序员文章站 2022-07-05 19:54:33
批量插入数据脚本一、平时常用的一个脚本,可以基本满足要求。把固定的字段改为变量,加拼接字符串方式一:’||i||’ 例:’{“no”:“111’||i||’”}’(此方式)方式二:concat 例:concat(concat(’{“blNo”:111"’,i),’"}’)DECLARE maxnumber CONSTANT INT := 5000;--插入5000条数据 i INT := 1;--i的取值从1开始BEGIN FOR i IN 1 .. maxnumber loo...

批量插入数据脚本
一、平时常用的一个脚本,可以基本满足要求。
把固定的字段改为变量,加拼接字符串
方式一:’||i||’ 例:’{“no”:“111’||i||’”}’(此方式)
方式二:concat 例:concat(concat(’{“blNo”:111"’,i),’"}’)

DECLARE
  maxnumber CONSTANT INT := 5000;--插入5000条数据
  i INT := 1;--i的取值从1开始
BEGIN
  FOR i IN 1 .. maxnumber loop
    insert into ODS.TABLE1--表名
      (ID, P_ID, DECL_PORT,lastupdateddt ,NOBER)--表字段
    values
      (ODS.seq_cert_id.nextval,'11' || i || '', '2215',to_timestamp('30-01-2019 12:51:22.004610','dd-mm-yyyy hh24:mi:ss.ff'), '55');--表字段内容,ODS.seq_cert_id.nextval是id递增序列名
  END loop;
  COMMIT;
END;

二、下面这几种方式暂时没有使用过

DECLARE
       max_count number(10);  --定义变量
begin
     max_count:=0;     
     while(max_count < 4000000)   
     LOOP
         insert into ODS.TABLE1
         				(ID,COPNAME,STATUS,CREATE_TIME,update_time) 
         values (max_count,'DHL',0,sysdate,sysdate);
        -- DBMS_OUTPUT.put_line(max_count);      --输出当前循环数
          max_count := max_count + 1;
     end loop;
end;

批量插入数据脚本,涉及子表的情况

--主表、主表插入批量数据--
--1、人工指定主表、子表ID值--
--K  主表ID起始值--
--maxhead 主表ID结束值--
--maxlist 每条主表对应的子表条数--
DECLARE 
	maxhead CONSTANT INT:=10;  
	maxlist CONSTANT INT:=3;  
	i INT :=1;
	j INT :=1; 
	k INT :=1;
BEGIN 
	FOR i IN K..maxhead LOOP 
		insert into ODS.TABLE1
				(ID,COPNAME,HBBB,STATUS,CREATE_TIME,update_time) 
		values 
				(i,'DHL',0,i,sysdate,sysdate);    
       
		FOR j IN 1..maxlist LOOP 
			INSERT INTO ODS.TABLE2 
				(ID,A_id,file_name,S_PATH,FILE_CTIME) 
			VALUES 
				(maxlist*(i-1)+j,i,maxlist*(i-1)+j,to_char(sysdate,'yyyy-mm-dd' || '/'),sysdate);
		END LOOP;
		COMMIT;
	END LOOP;
END; 

--2、自动获取主表、子表的SEQUENCE作为ID值
--maxhead 主表条数
--maxlist 每条主表对应的子表条数
DECLARE 
	maxhead CONSTANT INT:=2;  
	maxlist CONSTANT INT:=3;  
	i INT :=1;
	j INT :=1; 
BEGIN 
	FOR i IN 1..maxhead LOOP 
		insert into ODS.TABLE1
			(ID,A_id,STATUS,CREATE_TIME,update_time) 
		values 
			(ODS.seq_A_id.nextval,ODS.seq_cert_id.nextval,0,sysdate,sysdate);    
       
		FOR j IN 1..maxlist LOOP 
			INSERT INTO ODS.TABLE2
				(ID,A_id,A_PATH,UPLOAD_TIME) 
			VALUES
				(ODS.seq_A_id.nextval,ODS.seq_A_id.nextval,to_char(sysdate,'yyyy-mm-dd' || '/'),sysdate);
		END LOOP;
		commit;
	END LOOP;
END; 

三、批量修改数据:

DECLARE
  maxnumber CONSTANT INT := 5000;
  i INT := 1;
BEGIN
  FOR i IN 1 .. maxnumber loop
    update ODS.TABLE1
       set lastupdateddt = to_timestamp(to_char(Sysdate,
                                                'yyyy-mm-dd hh24:mi:ss'),
                                        'yyyy-mm-dd hh24:mi:ss.ff')
                           ,NOBER= '2' || i || ''
     where P_ID= '11' || i || '';
  END loop;
  COMMIT;
END;

时间取数方式
一、SYSTIMESTAMP(取当前系统值)
二、SYSDATE(取当前系统值,但只精确到时,分和秒都为0)
三、固定值为:TO_TIMESTAMP (‘2019-2-12 15:24:45.703000’, ‘yyyy-mm-dd hh24:mi:ss.ff6’)

本文地址:https://blog.csdn.net/weixin_43833680/article/details/111031201

相关标签: sql 数据库