sql-批量插入数据脚本

article/2025/9/13 20:50:58

批量插入数据脚本
1、第一种批量插入数据脚本.
可以基本满足要求。理解上较为简单,所以这个最常用。

DECLAREmaxnumber CONSTANT INT := 5000;--插入5000条数据i INT := 1;--i的取值从1开始
BEGINFOR i IN 1 .. maxnumber loopinsert 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;

NEXTVAL和CURRVAL的区别:
1、如果 sequence.CURRVAL 和 sequence.NEXTVAL 都出现在一个 SQL 语句中,则序列只增加一次。在这种情况下,每个 sequence.CURRVAL 和 sequence.NEXTVAL 表达式都返回相同的值,不管在语句中sequence.CURRVAL 和 sequence.NEXTVAL 的顺序。

DECLAREmaxnumber CONSTANT INT := 3;i INT := 1;
BEGINFOR i IN 1 .. maxnumber loopinsert into ODS.AS(ID, NSRMC, CAPXTIMESTAMP)values(SRC_SENS_SHBDCLG.SEQ_LG_FINANCE_ACCOUNT.NEXTVAL, SRC_SENS_SHBDCLG.SEQ_LG_FINANCE_ACCOUNT.CURRVAL,  '17-12月-20 03.21.24.173369 下午');END loop;COMMIT;
END;

执行脚本结果如下:
在这里插入图片描述

2、第二种批量插入数据脚本

DECLAREmax_count number(10);  --定义变量
beginmax_count:=0;     while(max_count < 4000000)   LOOPinsert 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;

3、两个表,同时批量插入数据的脚本


DECLARE maxhead CONSTANT INT:=1;  NEXT_ID varchar(18);
BEGIN FOR i IN 1..maxhead LOOP              insert into ODS.LG_FINANCE_ACCOUNT(ID, NSRSBH,NSRMC, SSSR_HJ, CKTS, ZZ_TAX, YY_TAX, XF_TAX, QYSD_TAX, GRSD_TAX, FC_TAX, CC_TAX, YH_TAX, CSWHJS_TAX, YGZ_TAX, MARK1, MARK2, MARK3, MARK4, MARK5, MARK6, JNYF, FILE_NAME, FILE_LAST_MODIFIED_TIME, DELETE_FLAG, CREATE_TIME, CAPXTIMESTAMP)values(ODS.SEQ_LG_FINANCE_ACCOUNT.NEXTVAL, '91310115MA1H896G'||i||'', ODS.SEQ_LG_FINANCE_ACCOUNT.CURRVAL, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, '临港地区', '南汇新城镇', '新京点', '新京点', '注册型企业', '正常户', '202001', 'CZ_南汇新城镇_1月税收汇总数据.xlsx', '17-12月-20 03.24.09.000000 下午', '1', '17-12月-20 03.21.24.173369 下午', '17-12月-20 03.21.24.173369 下午');Insert into ODS.LOG_STATISTICAL_FISCAL_API(ID, FILE_PATH, FILE_NAME, FILE_TYPE, FILE_SIZE, FILE_MODIFIED_TIME, TABLE_NAME, START_TIME, END_TIME, SUCCESS_TOTAL, ERROR_TOTAL, CREATE_TIME, CAPXTIMESTAMP)Values(ODS.SEQ_LG_FINANCE_ACCOUNT.CURRVAL, null, 'CZ_南汇新城镇_1月税收汇总数据test1.xlsx', 'xlsx', 2869793, '17-12月-20 03.38.57.000000 下午', 'LG_FINANCE_ACCOUNT', '17-12月-20 03.38.59.000000 上午', '17-12月-20 03.39.02.000000 上午', 1000, 0, '17-12月-20 03.36.10.391104 下午', '17-12月-20 03.36.10.391104 下午');			commit;END LOOP;    
END; 

4、涉及子表时,批量插入数据脚本,

--主表、主表插入批量数据--
--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; 

5、批量修改数据

DECLAREmaxnumber CONSTANT INT := 5000;i INT := 1;
BEGINFOR i IN 1 .. maxnumber loopupdate ODS.TABLE1set 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’)

把固定的字段改为变量:
方式一:’||i||’ 例:’{“no”:“111’||i||’”}’(此方式)
方式二:concat 例:concat(concat(’{“blNo”:111"’,i),’"}’)


http://chatgpt.dhexx.cn/article/w2J9IHqr.shtml

相关文章

oracle11g批量insert多条,Oracle高效批量插入数据

一、准备工作 建表 CREATE TABLE TEMP_20200210 ( DMC VARCHAR2(100); ) 用程序拼接如下的批量插入的SQL INSERT INTO TEMP_20200210 (DMC) SELECT CD.* FROM ( SELECT 1234567 FROM DUAL UNION SELECT 1234568 FROM DUAL UNION SELECT 1234568 FROM DUAL ) CD 在C盘文件夹下放…

springboot 注解方式批量插入数据

文章目录 一.使用场景二.实现方法1.mysql表结构2.domain3.mapper4.测试类5.测试结果 三.插入效率对比1.批量插入2.一条一条插入 一.使用场景 一次请求需要往数据库插入多条数据时&#xff0c;可以节省大量时间&#xff0c;mysql操作在连接和断开时的开销超过本次操作总开销的4…

Jmeter向数据库批量插入数据

Jmeter向数据库批量插入数据 下面介绍一下Jmeter向mysql数据库中插入数据的入门操作 1、新建一个线程组&#xff0c;这是必经步骤&#xff1a; 在测试计划上右键–>添加–>Theaders(Users)–>线程组 2、添加配置元件JDBC Connection Configuration 在线程组上右键…

【Hbase批量插入数据】

一.批量插入数据&#xff08;hbase用户执行&#xff0c;不可以调整key&#xff09; -- create ns_zj001:bigTab,f01 -- put ns_zj001:bigTab,001,f01:name,zhangsan java -cp ./hbase-tools-1.0.jar:hbase classpath com.suning.tools.Tools -zk hbase01-dev.cnsuning.com,h…

大数据写入到Oracle数据库(批量插入数据)

开发中经常遇到批量插入数据的需求&#xff0c;为了提高开发效率大多会使用ORM架构&#xff0c;个别之处 才会手写SQL&#xff0c;我们使用C#.NET Core5.0开发&#xff0c;所以优先选择了微软的EF。 但是EF原生没有批量操作功能&#xff0c;需要自己扩展或使用第三方的扩展&am…

Mybatis如何批量插入数据?

有一小段时间没有写技术博文了&#xff0c;今天我又来更新啦&#x1f60a;&#x1f60a;&#x1f60a;5月份中间有个小插曲&#xff0c;那就是我在单位打球意外导致脚跟腱受伤&#xff0c;然后住院在家修养了一个多月了&#xff0c;所以小伙伴们在外锻炼时还是时刻注意自身的安…

MYSQL-批量插入数据

批量插入数据 存储过程也有返回值&#xff0c;存储过程有一个或多个返回值&#xff0c;函数有且只有一个返回值 往表里插入1000w数据 1.建表 create database bigData; use bigData;create table dept( id int unsigned primary key auto_increment, deptno mediumint unsi…

Mybatis批量插入数据

前言 在很多业务场景中&#xff0c;我们需要批量录入数据。那么意味着我们需要以最高效的方式去实现功能&#xff0c;同时也需要保证软件的便捷性与可维护性&#xff0c;开源字节使用MyBatis foreach标签方式优雅的实现了材料的出入库。源码开放&#xff0c;可前往码云仓库免费…

批量插入

目录 一、批量插入数据 ⚪JDBC的批量处理语句的方法 二、高效的批量插入 1.举例&#xff1a;向goods表中插入20000条数据 ⭐goods表的创建 方式一&#xff1a;使用Statement 方式二&#xff1a; 使用PreparedStatement替换Statement &#x1f319;方式一与方式二的对比…

三种批量插入数据的方法

批量插入数据 本文将介绍三种批量插入数据的方法。第一种方法是使用循环语句逐个将数据项插入到数据库中&#xff1b;第二种方法使用的是SqlBulkCopy&#xff0c;使您可以用其他源的数据有效批量加载 SQL Server 表&#xff1b;第三种使用的方法是sql server中的表值参数方法&a…

Vue 通过a标签下载文件

vue前端点击某个a便签需要下载对应文件&#xff0c;href为下载路径&#xff0c;download为下载文件名 这是Vue-cli3 写法 因为public文件夹是静态拷贝。 并不要把文件放到src>assets里面 因为assets中的文件会经过 webpack 打包&#xff0c;重新编译。 <a href"./p…

通过 a 标签下载文件

后台管理项目涉及到文件下载到本地&#xff0c;类型包括&#xff08;图片&#xff0c;音频&#xff0c;视频&#xff0c;office文件等等&#xff09;&#xff0c;只需将后台接口提供的url给到 a 标签即可。 <div class"preview-download" click.stop"downLoa…

a标签下载文档 a下载文档失败问题 跨域调用

可以通过a标签下载文档 a中有一个download属性 这个属性可以为空&#xff0c;如果写入的话这是写下载文档的名字 a标签默认下载是在同一个域内&#xff0c;如果跨域的话下载会失败&#xff0c;可能变成预览 出现的问题 from origin ‘http://localhost:8080’ has been blocke…

js使用a标签实现文件下载功能

工作中遇到下载txt文本文件的下载需求&#xff0c;稍作整理&#xff0c;下载示例如下&#xff1a; <button onclick"log()">文件下载</button>// 日志函数 function log() {// dom中创建a标签let aTag document.createElement(a)// 日志展示的内容let c…

JS-a标签下载文件

目录 问题描述解决方法拓展 另一种文件流下载 问题描述 昨天拿到一个需求,就是做成这种下载的模样 后台返回的下载链接长成这样 解决方法 就是一个最普通的方法,创建a标签 ,加上download属性,模拟标签点击 就可以触发下载了 注意:这个是因为直接拿到了请求链接,get请求 co…

HTML中的一些细节处理

# 说明 参考资料:简书的 伴歌知行的JS下载图片和文件&#xff0c;防止浏览器直接打开 、夜半修仙,;CSDN的weixin_3791475的使用a标签下载文件不跳转;努力学习的汪&#xff1a;洪学习笔记 文章目录 # 说明前端利用a标签实现文件[图片]下载文件下载常用方式总结分析Ⅰ-后端设置下…

JAVA中数组和集合的区别

转换 数组转换为集合&#xff1a; Arrays.asList(数组) 示例&#xff1a; 1 2 3 4 5 int[] arr {1,3,4,6,6};//定义一个长度为5数组 Arrays.asList(arr); for(int i0;i<arr.length;i){ System.out.println(arr[i]); } 集合转换为数组&#xff1a; 集合.toArray()…

JAVA中数组和集合的相互转换

数组转集合&#xff1a; 1.遍历&#xff0c;最常用的方法&#xff0c;但是过程会繁琐一点 int arrs[] {1, 2};//1.遍历List<Integer> list new ArrayList<>();for (int ele : arrs) {list.add(ele);}System.out.println(list);2.使用数组工具类的asList()方法 但…

数组与集合的区别及知识拓展

一、数组和集合的区别 1、数组的长度是固定的&#xff0c;一个数组只能存储一种类型的元素&#xff0c;可以存储任意类型。 2、集合的长度是可变的&#xff0c;存储引用数据类型&#xff0c;当存储基本数据类型时需要存储其对应的包装类。 二、知识拓展 1、基本数据类型所对应…

数组和集合的区别及定义方式

数组和集合的定义 一、数组 数组是java语言内置的数据类型&#xff0c;他是一个线性的序列&#xff0c;所有可以快速访问其他的元素&#xff0c;数组和其他语言不同&#xff0c;当你创建了一个数组时&#xff0c;他的容量是不变的&#xff0c;而且在生命周期也是不能改变的&a…