java实现数据库之间批量插入数据
- package comnf147Package;
- import java.sql.*;
- public class DateMigrationLagou {
- //连接SQLite
- private Connection getSqlite() throws Exception {
- Class.forName("org.sqlite.JDBC");
- return DriverManager.getConnection("jdbc:sqlite:E:\\data\\lagou.db");
- }
- //连接MariaDB
- private Connection getMariaDb() throws Exception {
- Class.forName("com.mysql.jdbc.Driver");
- return DriverManager.getConnection("jdbc:mysql://localhost:3306/lagouDB?rewriteBatchedStatements=true", "root", "666666");
- }
- //释放资源
- private void release(Connection coon, Statement st, ResultSet rs) {
- if (rs != null) {
- try {
- rs.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- if (st != null) {
- try {
- st.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- if (coon != null) {
- try {
- coon.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- public void OperatingControl() {
- //从SQLite中取数据
- Connection SQliteConn = null;
- Statement SQliteSt = null;
- ResultSet SQliteRS = null;
- //添加到MaiiaDb
- Connection MariaDbConn = null;
- PreparedStatement MariaDbPs = null;
- try {
- //获取数据
- SQliteConn = this.getSqlite();
- SQliteSt = SQliteConn.createStatement();
- SQliteRS = SQliteSt.executeQuery("select * from lagou_position");
- //添加数据
- MariaDbConn = this.getMariaDb();
- MariaDbPs = MariaDbConn.prepareStatement("insert into lagou_position values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
- // 关闭事务自动提交 ,这一行必须加上,否则每插入一条数据会向log插入一条日志
- MariaDbConn.setAutoCommit(false);
- int i = 0;
- //计时开始
- long startime = System.currentTimeMillis();
- //设置批量处理的数量
- while (SQliteRS.next()) {
- for (int j = 1; j < 20; j++) {
- MariaDbPs.setObject(j, SQliteRS.getObject(j));
- }
- MariaDbPs.addBatch();
- //把若干sql语句装载到一起,然后一次送到数据库执行,执行需要很短的时间
- // 每 10000 条,向数据库发送一次执行请求
- if (++i % 10000 == 0) {
- MariaDbPs.executeBatch();
- }
- }
- //执行批量处理语句;
- MariaDbPs.executeBatch();
- //// 提交事务
- MariaDbConn.commit();
- //结束时间
- long stoptime = System.currentTimeMillis();
- //输出结果
- System.out.println("总数据" + i);
- System.out.println("插入用时" + (stoptime - startime) / 1000.0 + " 秒 ");
- } catch (Exception e) {
- try {
- if (MariaDbConn != null) {
- MariaDbConn.rollback();
- }
- } catch (SQLException e1) {
- }
- } finally {
- this.release(SQliteConn, SQliteSt, SQliteRS);
- this.release(MariaDbConn, MariaDbPs, null);
- }
- }
- }
- public static void main(String[] args) {
- //调用方式
- DateMigrationLagou dateMigrationLagou = new DateMigrationLagou();
- dateMigrationLagou.OperatingControl();
- }
java实现数据库之间批量插入数据的更多相关文章
- C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据
#region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// ...
- MyBatis向数据库中批量插入数据
Foreach标签 foreach: collection:指定要遍历的集合; 表示传入过来的参数的数据类型.该参数为必选.要做 foreach 的对象,作为入参时,List 对象默认用 list 代 ...
- net core天马行空系列-各大数据库快速批量插入数据方法汇总
1.前言 hi,大家好,我是三合.我是怎么想起写一篇关于数据库快速批量插入的博客的呢?事情起源于我们工作中的一个需求,简单来说,就是有一个定时任务,从数据库里获取大量数据,在应用层面经过处理后再把结果 ...
- Java通过Mybatis实现批量插入数据到Oracle中
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...
- sqlserver存储过程批量插入数据
在系统中经常会遇到向数据库中批量插入数据情况,存储过程中没有数组,只有通过字符串分割循环插入,下面是一个本人研究的一个例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 c ...
- Java使用iBatis批量插入数据到Oracle数据库
Java使用iBatis批量插入数据到Oracle数据库 因为我们的数据跨库(mysql,oracle),单独取数据的话需要遍历好多遍,所以就想着先从mysql数据库中取出来的数据然后在oracle数 ...
- Java 批量插入数据(Oracle)
//批量添加20000条数据用时8秒. try { String url = "jdbc:oracle:thin:@IP:1521:orcl"; // orcl为数据库的SI ...
- .Net批量插入数据到SQLServer数据库,System.Data.SqlClient.SqlBulkCopy类批量插入大数据到数据库
批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储 ...
- Android 批量插入数据到SQLite数据库
Android中在sqlite插入数据的时候默认一条语句就是一个事务,因此如果存在上万条数据插入的话,那就需要执行上万次插入操作,操作速度可想而知.因此在Android中插入数据时,使用批量插入的方式 ...
随机推荐
- Linux中使用curl命令发送带参数的get请求和post请求
GET 请求 curl命令 + 请求接口的地址 curl http://**.**.***.**/SeedAgile/SeedApi/querySprintByRequirementNo?parame ...
- sql server 通配符
sql有四种通配符: -- %可以匹配任意长度的字符: -- _匹配单个字符: -- [charlist]匹配括号中的任何一个字符 -- [^]匹配不在括号中的任意单个字符 示例: --'[ab]'匹 ...
- 第二章:排序算法 及其他 Java代码实现
目录 第二章:排序算法 及其他 Java代码实现 插入排序 归并排序 选择排序算法 冒泡排序 查找算法 习题 2.3.7 第二章:排序算法 及其他 Java代码实现 --算法导论(Introducti ...
- Spring的基本应用(1):IDEA版本
一.Spring概述: 1.什么是Spring? Spring是分层的JavaSE/EE应用full-stack(一站式)轻量级开源框架,以IoC(Inverse Of Control:控制反转)和A ...
- CentOS下安装DockerCE
title: CentOS下安装DockerCE comments: false date: 2019-09-04 09:47:58 description: 在CentOS下安装社区版Docker ...
- Vue与Angular以及React的三者之间的区别
1.与AngularJS的区别 相同点:都支持指令:内置指令和自定义指令:都支持过滤器:内置过滤器和自定义过滤器:都支持双向数据绑定:都不支持低端浏览器. 不同点:AngularJS的学习成本高,比如 ...
- PHP之常用操作
在最高权限下执行相关命令 1)查看PHP配置 php --ini Configuration File (php.ini) Path: /www/server/php//etc Loaded Conf ...
- JS常用自定义函数总结
JS常用自定义函数总结 1.原生JavaScript实现字符串长度截取 2.原生JavaScript获取域名主机 3.原生JavaScript清除空格 4.原生JavaScript替换全部 5.原 ...
- 自己实现一个简化版的SpringMVC框架
废话不多说,我们进入今天的正题,在Web应用程序设计中,MVC模式已经被广泛使用.SpringMVC以DispatcherServlet为核心,负责协调和组织不同组件以完成请求处理并返回响应的工作,实 ...
- c++ 递归算法实现排列组合
通过引用的方式来传值,具体的实现的方法如下 void pc(int m,int n,int &position,int (&a)[100]) { //如果运算得到那个数 if (pos ...