开发者社区> 问答> 正文

根据读取的csv文件将数据批量插入到对应的表,:报错

想跟大家请教个问题:根据读取的csv文件将数据批量插入到对应的表。
        批量插入的语句在mybatis 的配置文件中该如何写?

<!-- 根据列明向指定表插入数据   --> <insert id="import"  parameterType="java.util.HashMap"   statementType="STATEMENT"> insert into ${tableName} (

	 <foreach collection="columeName" item="item" index="index"   separator="," open="" close="">  
      ${item}
    </foreach>  
	 )
	  <foreach collection="tableData" item="item" index="index"   separator=";" >  
	  values(${item})
    </foreach>  
    
</insert></pre> 这样不行插入时提示SQL语法不对 
<!-- 根据列明向指定表插入数据   -->
	<insert id="import"  parameterType="java.util.HashMap"   statementType="STATEMENT">
		 insert into ${tableName} (

		 <foreach collection="columeName" item="item" index="index"   separator="," open="" close="">  
          ${item}
        </foreach>  
		 )values
		  <foreach collection="tableData" item="item" index="index"   separator="union all" >  
		  	select #{item} from dual
        </foreach>  
        
	</insert>
这样不行插入时提示SQL语法不对 我该怎么写,麻烦了您指出错误

展开
收起
kun坤 2020-06-09 11:04:07 739 0
1 条回答
写回答
取消 提交回答
  • 最好不要这样写,数据多了的话拼接的sql太长,会报错什么的。
    mybatis 还有一种批量插入方法:
    SqlSession session=factory..openSession(ExecutorType.BATCH, false);
    for(Map item:list){
                session.insert("xxx.xxx.batchInsert",item);   
    }
    if (session != null) {                 session.commit();                 session.close();         }

    ######不行啊,我是读取了个CSV文件,第一行是列,下面是一一对应的数据。让后我把列明与数据分别放到了两个集合,把表明和这两个集合放到了一个Map中。您说的方法行不通啊######不行啊,我是读取了个CSV文件,第一行是列,下面是一一对应的数据。让后我把列明与数据分别放到了两个集合,把表明和这两个集合放到了一个Map中。

    2020-06-09 11:04:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
大批量处理excel文件到ODPS中方案 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载