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中插入数据时,使用批量插入的方式 ...
随机推荐
- rabbitmq中关于exchange模式type报错
channel.exchange_declare(exchange='logs', type='fanout') 报错: Traceback (most recent call last): Fil ...
- model attribute
model attribute,字面意思,给model加attribute以配置数据库 主键 public class OrderDetail { [Key] public int OrderDeta ...
- Java后端技术面试汇总(第三套)
1.基础题 • 怎么解决Hash冲突:(开放地址法.链地址法.再哈希法.建立公共溢出区等)• 写出一个必然会产生死锁的伪代码:• Spring IoC涉及到的设计模式:(工厂模式.单利模式..)• t ...
- java之设计模式汇总
1.单例模式 就是一个类只产生一个对象 对应数据库连接 定时执行者服务(ScheduledExecutorService) 在整个项目中应该只有一个对象 2.工厂模式 定义一个用于创建对象的接口 让子 ...
- 简单搭建http服务器-HttpListener使用
使用HTTPListener可以简单搭建一个Http服务器,对于本地使用很是方面,想起之前使用了WebSocket来与本地网页通讯的例子,也是可以改为使用HTTPListener来做的.看下HTTPL ...
- sql server lower函数
lower()函数 --将大写字符数据转换为小写字符数据 语法:lower(character_expression) --character_expression是指定要进行转换的字符串
- 关于NGINX在wnidows下面和linux下面的多站点的反向代理的配置
原创文章,转载注明出处 nginx作为一款优秀的反向代理软件,以其好用,易于搭建负载均衡的网站集群而著称,这里分别记录一下工作中用到nginx作为负载以及多站点发布的时候一些配置和注意事项 一 ng ...
- 108、如何使用 Secret? (Swarm15)
参考https://www.cnblogs.com/CloudMan6/p/8068057.html 我们经常要想容器传递敏感信息,最常见的就是密码.比如: docker run -e MYS ...
- 强大的开源企业级数据库监控利器Lepus
Lepus监控简单介绍 官方网站:http://www.lepus.cc 开源企业级数据库监控系统 简洁.直观.强大的开源数据库监控系统,MySQL/Oracle/MongoDB/Redis一站式性能 ...
- LintCode 6---合并排序数组 II
import java.util.Arrays; public class Lint6 { /* * 合并两个排序的整数数组A和B变成一个新的数组.新数组也要有序. */ public static ...