运行环境: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. 有关Linux

    关于nginx https://www.cnblogs.com/jingmoxukong/p/5945200.html 停止命令 sudo systemctl stop nginx.service

  2. python读取csv文件、excel文件并封装成dict类型的list,直接看代码

    # coding=UTF-8import csvimport xlrd class ReaderFile(): """ 读取csv文件 filePath:文件路径 &qu ...

  3. mysql定时任务event——清理过期数据 (转)

    1.查询是否开启事件调度 SHOW VARIABLES LIKE 'event_scheduler'; 2.开启事件调度 临时: SET GLOBAL event_scheduler = 1; 永久: ...

  4. 树形DP入门学习

    这里是学习韦神的6道入门树形dp进行入门,本来应放在day12&&13里,但感觉这个应该单独放出来好点. 这里大部分题目都是参考的韦神的思想. A - Anniversary part ...

  5. iOS-UITabbar自定义

    [self createCustomTabBar]; -(void)createCustomTabBar{    //创建一个UIImageView,作为底图    UIImageView *bgVi ...

  6. js类似新闻图片轮换(带有文字介绍,其实可以放任何内容)

    js类似新闻图片轮换(带有文字介绍,其实可以放任何内容) 主要是利用style="display:block;" 属性<script language="javas ...

  7. rest_framework之三种分页器使用方法

      from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination ...

  8. FineReport工具

    PostgreSQL链接问题: 正常安装FineReport工具和PostgreSQL数据库之后,在FineReport工具当中链接数据库显示连接失败的原因是因为FineReport安装包里面没有Po ...

  9. Centos7.3安装jdk和maven

    安装jdk和maven             通过winscp上传jdk             解压                 tar -zxvf jdk-8u91-linux-x64.ta ...

  10. Centos7.3 安装MYSQL

    安装mysql         1.进入到要存放安装包的位置             mkdir /home/lnmp             cd /home/lnmp         2.查看系统 ...