JdbcTemplate批量插入数据
运行环境:SpringBoot,注入JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
1、单表批量插入数据
@Test
public void batchTest() throws IOException { InputStream inputStream = new FileInputStream("O:\\files\\测试.txt"); List<Object[]> list = new ArrayList<>(); for (String readLine : IOUtils.readLines(inputStream,"utf-8")){
String[] s = readLine.split("\\|");
//list.add(new Object[]{s[0],s[1],s[2],s[3],s[4]});
list.add(new Object[]{s[1],s[0]});
} //遍历List<Object[]>集合中的每一个元素
/* for (Object[] o : list){
for (int i = 0; i < o.length; i++) {
System.out.println("==========="+o[i]);
} }*/ //执行批量插入操作
String sql = "INSERT INTO `test`(`name`,`area`) VALUES (?,?)";
jdbcTemplate.batchUpdate(sql, list); }
样本数据:测试.txt
测试数据1|测试数据2|测试数据3
测试数据4|测试数据5|测试数据6
测试数据7|测试数据8|测试数据9
单次循环插入:
public void insertToTag(String filename) throws IOException {
InputStream is = new FileInputStream(filename);
Map<String,String> map = new HashMap<>();
for (String readLine : IOUtils.readLines(is, "utf-8")) {
String[] s = readLine.split("\\|");
map.put(s[1],s[0]);
}
String sql = "INSERT INTO `test`(`name`,`area`) VALUES (?,?)";
for (Map.Entry<String, String> stringStringEntry : map.entrySet()) {
// System.out.println(stringStringEntry.getKey()+"-->"+stringStringEntry.getValue());
jdbcTemplate.update(sql,stringStringEntry.getKey(),stringStringEntry.getValue());
}
}
2、联表插入数据,将字典表中的id插入到另一张表
public void insertToGuideBatch(String filename) throws IOException {
InputStream is = new FileInputStream(filename);
//字段名,id值
Map<String,Long> map1 = new HashMap<>();
//该方法类似于set集合
SqlRowSet s1 = jdbcTemplate.queryForRowSet("SELECT `id`,`area` FROM g_enforcement_tag");
while (s1.next()){
map1.put(s1.getString("area"),s1.getLong("id"));
}
for (String readLine : IOUtils.readLines(is, "utf-8")) {
String[] s = readLine.split("\\|");
Long id = map1.get(s[0]);
// jdbcTemplate.update("insert into xxx value (?,?)",id,s[4]);
jdbcTemplate.update("INSERT INTO `g_enforcement_guide`(`prop1`,`prop2`,`prop3`,`prop4`,`prop5`) VALUES (?,?,?,?,?)","test",id,s[2],s[3],s[4]);
}
}
JdbcTemplate批量插入数据的更多相关文章
- C#批量插入数据到Sqlserver中的四种方式
我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...
- .Net批量插入数据到SQLServer数据库,System.Data.SqlClient.SqlBulkCopy类批量插入大数据到数据库
批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储 ...
- sql 中的Bulk和C# 中的SqlBulkCopy批量插入数据 ( 回顾 and 粗谈 )
通常,我们会对于一个文本文件数据导入到数据库中,不多说,上代码. 首先,表结构如下. 其次,在我当前D盘中有个文本文件名为2.txt的文件. 在数据库中,可以这样通过一句代码插入. Bulk in ...
- Java 批量插入数据(Oracle)
//批量添加20000条数据用时8秒. try { String url = "jdbc:oracle:thin:@IP:1521:orcl"; // orcl为数据库的SI ...
- 批量插入数据(基于Mybatis的实现-Oracle)
前言:做一个数据同步项目,要求:同步数据不丢失的情况下,提高插入性能. 项目DB框架:Mybatis.DataBase:Oracle. -------------------------------- ...
- C#批量插入数据到Sqlserver中的三种方式
本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生 成 ...
- SqlServer——批量插入数据
像Major表里面批量插入数据演示: 代码如下: Declare @I int Set @I= Begin Tran InsertData: Insert into Major values(@I,' ...
- mybatis批量插入数据到oracle
mybatis 批量插入数据到oracle报 ”java.sql.SQLException: ORA-00933: SQL 命令未正确结束“ 错误解决方法 oracle批量插入使用 insert a ...
- SQLServer 批量插入数据的两种方法
SQLServer 批量插入数据的两种方法-发布:dxy 字体:[增加 减小] 类型:转载 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Ins ...
随机推荐
- ABAP ole操作
1.ole 如何保存和退出call method of sheetname 'saves' exporting #1 = filepath #2 = 1. call method of applica ...
- thymeleaf中double/float格式化,四舍五入显示两位小数
private Float balance; 代码: <span class="A124_balance_num" th:text="${#numbers.form ...
- Java使用MyBatis的ScriptRunner执行SQL脚本
脚本文件D:/test_transaction.sql: start transaction; drop table if exists testdb.test_transaction_table; ...
- iOS-UIButton分类扩展(封装)
UIButton+BackgroundColor.h #import <UIKit/UIKit.h> @interface UIButton (BackgroundColor) - (vo ...
- vim学习一
来源 实验楼(shiyanlou.com)的<Vim编辑器>课程的学习报告. 6种基本模式 普通模式 默认进入vi时的模式,使用编辑器命令,i h j k l 等等 插入模式 用户按下 i ...
- 最新 二六三网络通信java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿. 二六三网络通信等10家互联网公司的校招Offer,因为某些自身原因最终选择了 二六三网络通信.6.7月主要是做系统复习.项 ...
- vue中使用axios下载文件,兼容IE11
一.设置axios返回值为blob 二.使用a标签的down属性下载,如果是IE浏览器,可以使用navigator.msSaveBlob进行下载 // data的数据类型是blob downloadF ...
- Mybatis表关联一对多、多对一、多对多
项目工程结构如下: 1. 搭建MyBatis框架环境 首先需要引入两个包:mybatis.jar 和 sqljdbc42.jar包 若分页需要导入两个包:pagehelper-5.1.0.jar 和 ...
- FineReport做成之后如何在Tomcat上运行
问题描述: 自己用FineReport做成的报表画面,要在Tomcat上运行启动 第一步:下载Tomcat 网址: http://tomcat.apache.org/download-80.cgi 下 ...
- 修改jira数据库配置