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中插入数据时,使用批量插入的方式 ...
随机推荐
- stm32F429启动时钟配置
STM32f429在启动时会在startup_stm32f429_439xx.s中调用static void SetSysClock(void)函数.默认使用的是25M晶振,把系统时钟设置为180M. ...
- python基础之内置函数和匿名函数
内置函数 学习函数以后多了很多概念,例如函数的命名空间,函数的作用域,函数的调用等等,函数的作用就是为了实现某些功能而方便以后可以调用,内置函数就是这样的一些公共的函数,被称为内置函数. 我们就一 ...
- C数据结构排序算法——直接插入排序法用法总结(转http://blog.csdn.net/lg1259156776/)
声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 排序相关的的基本概念 排序:将一组杂乱无章的数据按一定的规律顺次排列起来. 数据表( data list): ...
- [转载]HTTP和HTTPS
来源:https://blog.csdn.net/xiaoming100001/article/details/81109617 大纲 一.前言: 先来观察这两张图,第一张访问域名http://www ...
- leetcode 1282. Group the People Given the Group Size They Belong To
There are n people whose IDs go from 0 to n - 1 and each person belongs exactly to one group. Given ...
- ubuntu 安装vim报错
问题:ubuntu18.04默认没有安装vim,使用 sudo apt install 提示 错误信息: 下列信息可能会对解决问题有所帮助: 下列软件包有未满足的依赖关系: vim : 依赖: vim ...
- 【转载】java工程师学习之路---给自己的目标
想学习或者提升java的可以看看,单从java角度来看总结的虽然还是很全面的,主要是为了自己看 http://blog.csdn.net/peace1213/article/details/50849 ...
- Redis简介,应用场景,优势
Redis简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化 ...
- 测开常见面试题什么是redis
企业中redis是必备的性能优化中间件,也是常见面试题,首先Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库.Redis全称为:Rem ...
- Java语言基础(4)
1 关系运算符:>,>=,<,<=,==,!= 案例:Demo1 public class Demo1 { //偶数:能被2整除的整数 //2,4,6,8,10... //整除 ...