运行环境: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批量插入数据的更多相关文章

  1. C#批量插入数据到Sqlserver中的四种方式

    我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...

  2. .Net批量插入数据到SQLServer数据库,System.Data.SqlClient.SqlBulkCopy类批量插入大数据到数据库

    批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储 ...

  3. sql 中的Bulk和C# 中的SqlBulkCopy批量插入数据 ( 回顾 and 粗谈 )

    通常,我们会对于一个文本文件数据导入到数据库中,不多说,上代码. 首先,表结构如下.   其次,在我当前D盘中有个文本文件名为2.txt的文件. 在数据库中,可以这样通过一句代码插入. Bulk in ...

  4. Java 批量插入数据(Oracle)

    //批量添加20000条数据用时8秒. try {    String url = "jdbc:oracle:thin:@IP:1521:orcl"; // orcl为数据库的SI ...

  5. 批量插入数据(基于Mybatis的实现-Oracle)

    前言:做一个数据同步项目,要求:同步数据不丢失的情况下,提高插入性能. 项目DB框架:Mybatis.DataBase:Oracle. -------------------------------- ...

  6. C#批量插入数据到Sqlserver中的三种方式

    本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生 成 ...

  7. SqlServer——批量插入数据

    像Major表里面批量插入数据演示: 代码如下: Declare @I int Set @I= Begin Tran InsertData: Insert into Major values(@I,' ...

  8. mybatis批量插入数据到oracle

    mybatis 批量插入数据到oracle报 ”java.sql.SQLException: ORA-00933: SQL 命令未正确结束“  错误解决方法 oracle批量插入使用 insert a ...

  9. SQLServer 批量插入数据的两种方法

    SQLServer 批量插入数据的两种方法-发布:dxy 字体:[增加 减小] 类型:转载 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Ins ...

随机推荐

  1. matlab学习——04图与网络(最短路,最小生成树,最大流)

    04图与网络 1.最短路 (1) 自己写的dijstra算法 format compact; clc,clear all a=zeros(6); a(1,2)=50;a(1,4)=40;a(1,5)= ...

  2. Spring Cloud(7.1):安装Kafka和Redis

    Kafka安装 (1)从官方(http://kafka.apache.org/downloads)下载安装包.kafka安装包和一般安装包的命名方式不一样,我们看一个kafka包命名:kafka_2. ...

  3. sql的游标用法举例(Cursor)

    sql的游标用法举例 ), ) Declare authors_cursor Cursor For Select Name,TrueName From Account Open authors_cur ...

  4. 【ARTS】01_34_左耳听风-201900701~201900707

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  5. 数据结构与算法学习(二)——Master公式及其应用

    本篇文章涉及公式,由于博客园没有很好的支持,建议移步我的CSDN博客和简书进行阅读. 1. Master公式是什么? 我们在解决算法问题时,经常会用到递归.递归在较难理解的同时,其算法的复杂度也不是很 ...

  6. www.zhaoyueyi.cn

    2019/6/20这一天.我筹划了很久,准备搞点事情; 然后去阿里云上买下了我思虑已久的服务器以及域名,以前一直舍不得买,或许也是因为舍不得买的原因,我的技术一直很low,处于很肤浅的水平 虽然工作4 ...

  7. 各种 Java Thread State 分析

    转自:https://www.cnblogs.com/zhengyun_ustc/archive/2013/03/18/tda.html 1,线程状态为“waiting for monitor ent ...

  8. 最新 百度java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.百度等10家互联网公司的校招Offer,因为某些自身原因最终选择了百度.6.7月主要是做系统复习.项目复盘.LeetCode ...

  9. ERNIE 2.0 理解与使用

    更新中 更新时间:2019-12-06 17:43:27 实验需要,在自己学习的过程中做如下笔记,欢迎指正,欢迎交流. 1. ERNIE简述 ERNIE和BERT一样,也是基于transformer来 ...

  10. RecyclerView的scrollToPosition和smoothScrollToPosition

    关于recyclerview滑向指定位置,肯定会想到scrollToPosition和smoothScrollToPosition两个方法. 源码分析scrollToPosition,最后会调用vie ...