a7339359
a7339359
采纳率50%
2019-07-11 11:52 浏览 2.3k

mybatis mysql 批量插入数据

5

最近在网上学的jsoup爬数据,爬了大概几万条城市地区的数据准备通过mybatis插入的mysql里,九个字段除了ID,其它都是varchar类型,区划代码是十二位数字暂时也是用的varchar;

想过三种插入方式

1:service层循环调用dao层插入数据,一条一条来

2:拼接sql类似 insert into citytable (province,...) select ... union all select ... union all
在后台先拼接几百条然后插入

3:xml里用foreach循环插入

请问有其它方法可以快速插入数据吗?求学中,路过的大神请多指教

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答 默认 最新

  • zqbnqsdsmd zqbnqsdsmd 2019-07-11 11:58
  • wojiushiwo945you 毕小宝 2019-07-11 14:33

    数据库建表时将数据库引擎改成 MyISAM ,不要使用默认的 InnoDB ,速度会非常快。

    点赞 1 评论 复制链接分享
  • chinarealone chinarealone 2019-07-11 17:07

    批量插入/更新永远快于逐条插入/更新,原因在开启事务的成本,日志写入的成本等等。不论是采用框架组件还是自己拼凑,最终提交的语句形式如下:
    insert into tb (...) values(...),(...)(...),(...)(...),(...)

    点赞 评论 复制链接分享
  • hjs218 Json-Huang 2019-07-11 23:15

    可以考虑下多线程批量+MyISAM引擎。
    1、多线程提高解析效率:将数据切分为 N 块,每一块交由一个线程去解析,直到所有块都被解析完成;
    2、为了提高入库效率,表可以先不设计主键,数据库引擎选择 MyISAM;

    点赞 评论 复制链接分享
  • qq_35172613 qq_35172613 2019-07-19 10:08

    几万条数据不多啊,如果仅仅是一次将数据插入到表中,建议用excle表格整理,导入进去

    点赞 评论 复制链接分享

相关推荐