1. package comnf147Package;
  2.  
  3. import java.sql.*;
  4.  
  5. public class DateMigrationLagou {
  6.  
  7. //连接SQLite
  8. private Connection getSqlite() throws Exception {
  9. Class.forName("org.sqlite.JDBC");
  10. return DriverManager.getConnection("jdbc:sqlite:E:\\data\\lagou.db");
  11. }
  12.  
  13. //连接MariaDB
  14. private Connection getMariaDb() throws Exception {
  15. Class.forName("com.mysql.jdbc.Driver");
  16. return DriverManager.getConnection("jdbc:mysql://localhost:3306/lagouDB?rewriteBatchedStatements=true", "root", "666666");
  17. }
  18.  
  19. //释放资源
  20. private void release(Connection coon, Statement st, ResultSet rs) {
  21. if (rs != null) {
  22. try {
  23. rs.close();
  24. } catch (SQLException e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. if (st != null) {
  29. try {
  30. st.close();
  31. } catch (SQLException e) {
  32. e.printStackTrace();
  33. }
  34. }
  35. if (coon != null) {
  36. try {
  37. coon.close();
  38. } catch (SQLException e) {
  39. e.printStackTrace();
  40. }
  41. }
  42. }
  43.  
  44. public void OperatingControl() {
  45.  
  46. //从SQLite中取数据
  47. Connection SQliteConn = null;
  48. Statement SQliteSt = null;
  49. ResultSet SQliteRS = null;
  50.  
  51. //添加到MaiiaDb
  52. Connection MariaDbConn = null;
  53. PreparedStatement MariaDbPs = null;
  54.  
  55. try {
  56. //获取数据
  57. SQliteConn = this.getSqlite();
  58. SQliteSt = SQliteConn.createStatement();
  59. SQliteRS = SQliteSt.executeQuery("select * from lagou_position");
  60.  
  61. //添加数据
  62. MariaDbConn = this.getMariaDb();
  63. MariaDbPs = MariaDbConn.prepareStatement("insert into lagou_position values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
  64.  
  65. // 关闭事务自动提交 ,这一行必须加上,否则每插入一条数据会向log插入一条日志
  66. MariaDbConn.setAutoCommit(false);
  67.  
  68. int i = 0;
  69. //计时开始
  70. long startime = System.currentTimeMillis();
  71. //设置批量处理的数量
  72.  
  73. while (SQliteRS.next()) {
  74. for (int j = 1; j < 20; j++) {
  75. MariaDbPs.setObject(j, SQliteRS.getObject(j));
  76. }
  77. MariaDbPs.addBatch();
  78. //把若干sql语句装载到一起,然后一次送到数据库执行,执行需要很短的时间
  79. // 每 10000 条,向数据库发送一次执行请求
  80. if (++i % 10000 == 0) {
  81. MariaDbPs.executeBatch();
  82. }
  83. }
  84. //执行批量处理语句;
  85. MariaDbPs.executeBatch();
  86. //// 提交事务
  87. MariaDbConn.commit();
  88.  
  89. //结束时间
  90. long stoptime = System.currentTimeMillis();
  91. //输出结果
  92. System.out.println("总数据" + i);
  93. System.out.println("插入用时" + (stoptime - startime) / 1000.0 + " 秒 ");
  94. } catch (Exception e) {
  95. try {
  96. if (MariaDbConn != null) {
  97. MariaDbConn.rollback();
  98. }
  99. } catch (SQLException e1) {
  100. }
  101. } finally {
  102. this.release(SQliteConn, SQliteSt, SQliteRS);
  103. this.release(MariaDbConn, MariaDbPs, null);
  104. }
  105. }
  106.  
  107. }
  1. public static void main(String[] args) {
  2.  
  3. //调用方式
  4. DateMigrationLagou dateMigrationLagou = new DateMigrationLagou();
  5. dateMigrationLagou.OperatingControl();
  6. }

java实现数据库之间批量插入数据的更多相关文章

  1. C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据

    #region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// ...

  2. MyBatis向数据库中批量插入数据

    Foreach标签 foreach: collection:指定要遍历的集合; 表示传入过来的参数的数据类型.该参数为必选.要做 foreach 的对象,作为入参时,List 对象默认用 list 代 ...

  3. net core天马行空系列-各大数据库快速批量插入数据方法汇总

    1.前言 hi,大家好,我是三合.我是怎么想起写一篇关于数据库快速批量插入的博客的呢?事情起源于我们工作中的一个需求,简单来说,就是有一个定时任务,从数据库里获取大量数据,在应用层面经过处理后再把结果 ...

  4. Java通过Mybatis实现批量插入数据到Oracle中

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...

  5. sqlserver存储过程批量插入数据

    在系统中经常会遇到向数据库中批量插入数据情况,存储过程中没有数组,只有通过字符串分割循环插入,下面是一个本人研究的一个例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 c ...

  6. Java使用iBatis批量插入数据到Oracle数据库

    Java使用iBatis批量插入数据到Oracle数据库 因为我们的数据跨库(mysql,oracle),单独取数据的话需要遍历好多遍,所以就想着先从mysql数据库中取出来的数据然后在oracle数 ...

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

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

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

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

  9. Android 批量插入数据到SQLite数据库

    Android中在sqlite插入数据的时候默认一条语句就是一个事务,因此如果存在上万条数据插入的话,那就需要执行上万次插入操作,操作速度可想而知.因此在Android中插入数据时,使用批量插入的方式 ...

随机推荐

  1. Linux中使用curl命令发送带参数的get请求和post请求

    GET 请求 curl命令 + 请求接口的地址 curl http://**.**.***.**/SeedAgile/SeedApi/querySprintByRequirementNo?parame ...

  2. sql server 通配符

    sql有四种通配符: -- %可以匹配任意长度的字符: -- _匹配单个字符: -- [charlist]匹配括号中的任何一个字符 -- [^]匹配不在括号中的任意单个字符 示例: --'[ab]'匹 ...

  3. 第二章:排序算法 及其他 Java代码实现

    目录 第二章:排序算法 及其他 Java代码实现 插入排序 归并排序 选择排序算法 冒泡排序 查找算法 习题 2.3.7 第二章:排序算法 及其他 Java代码实现 --算法导论(Introducti ...

  4. Spring的基本应用(1):IDEA版本

    一.Spring概述: 1.什么是Spring? Spring是分层的JavaSE/EE应用full-stack(一站式)轻量级开源框架,以IoC(Inverse Of Control:控制反转)和A ...

  5. CentOS下安装DockerCE

    title: CentOS下安装DockerCE comments: false date: 2019-09-04 09:47:58 description: 在CentOS下安装社区版Docker ...

  6. Vue与Angular以及React的三者之间的区别

    1.与AngularJS的区别 相同点:都支持指令:内置指令和自定义指令:都支持过滤器:内置过滤器和自定义过滤器:都支持双向数据绑定:都不支持低端浏览器. 不同点:AngularJS的学习成本高,比如 ...

  7. PHP之常用操作

    在最高权限下执行相关命令 1)查看PHP配置 php --ini Configuration File (php.ini) Path: /www/server/php//etc Loaded Conf ...

  8. JS常用自定义函数总结

    JS常用自定义函数总结   1.原生JavaScript实现字符串长度截取 2.原生JavaScript获取域名主机 3.原生JavaScript清除空格 4.原生JavaScript替换全部 5.原 ...

  9. 自己实现一个简化版的SpringMVC框架

    废话不多说,我们进入今天的正题,在Web应用程序设计中,MVC模式已经被广泛使用.SpringMVC以DispatcherServlet为核心,负责协调和组织不同组件以完成请求处理并返回响应的工作,实 ...

  10. c++ 递归算法实现排列组合

    通过引用的方式来传值,具体的实现的方法如下 void pc(int m,int n,int &position,int (&a)[100]) { //如果运算得到那个数 if (pos ...