运行环境: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. 123456123456#0#-----com.threeapp.xiongMaoPaoPao01----熊猫跑酷01

    com.threeapp.xiongMaoPaoPao01----熊猫跑酷01

  2. (四)Centos之查询目录中内容命名ls

    一.查询目录中内容命名ls 1.1 root代表当前登录用户,localhost代表主机名, ~代表当前主机目录,#代表用户权限 #表示超级用户,$表示普通用户: 1.2 查询目录中内容命令 ls   ...

  3. 安卓模拟器Android SDK 4.0.3 R2安装完整图文教程

    在最新的Android 4.0.3 R2模拟器中,已经加入了GPU支持,可以支持OpenGL ES 2.0标准,让开发者可以借助模拟器来测试自己的OpenGL游戏.在去年新增了摄像头支持之后,现在的新 ...

  4. Mysql开启审计功能

    第一种经验证,有效. 第一种用macfee的mysql审计插件. 下载地址:https://bintray.com/mcafee/mysql-audit-plugin/release/1.1.4-72 ...

  5. springboot-mybatis-pagehelper(分页插件)

    依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://m ...

  6. DSP VLIB实验

    声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言 在dsp开发中,为了节省开发时间和难度,TI将一些成熟的算法封装为模块,供开发者使用.如果能充分利用这些 ...

  7. Hadoop Join

    1. Reduce Join工作原理 Map端的主要工作:为来自不同表或文件的key/value对,打标签以区别不同来源的记录.然后用连接字段作为key,其余部分和新加的标志作为value,最后进行输 ...

  8. 【Docker】:使用docker安装redis,挂载外部配置和数据

    普通安装 1.拉取镜像,redis:4.0 docker pull redis:4.0 2.创建redis容器名"redistest1",并开启持久化 docker run -d ...

  9. 扩散:Apache2放开virtualhost,wamp启动apache服务失败

    原文链接:https://blog.csdn.net/weixin_45688623/article/details/101423164 CSDN写过过程了,有点长,这里不赘述了,只写最后我设置的结果 ...

  10. 笔记-8:mysql触发器

    1.触发器介绍 触发器是一个被指定关联到一个表的数据库对象,当对一个表的特定事件出现时,将会被激活. mysqk触发器只支持:INSERT.UPDATE.DELETE语句. 每个表每个事件每次只允许一 ...