`
jilong-liang
  • 浏览: 469779 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

对数据批量处理插入数据库指定的表

    博客分类:
  • Java
阅读更多
package cn.flybird.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

/**表
 * DROP TABLE IF EXISTS `test2`; 
 * CREATE TABLE `test2`
 * (`name` varchar(500)CHARACTER SET gbk DEFAULT NULL
 *  )
 *  ENGINE=MyISAM DEFAULT CHARSET=gbk;
 * 
 * @author Administrator
 * 
 */
public class Test2 {
	public static void main(String[] args) throws Exception {
		Class.forName("com.mysql.jdbc.Driver");
		Connection con = (Connection) DriverManager.getConnection(
				"jdbc:mysql://" + "localhost:3306/test?characterEncoding=GBK",
				"root", "root");
		// 关闭事务自动提交
		con.setAutoCommit(false);
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS");
		TimeZone t = sdf.getTimeZone();
		t.setRawOffset(0);
		sdf.setTimeZone(t);
		Long startTime = System.currentTimeMillis();
		PreparedStatement pst = (PreparedStatement) con
				.prepareStatement("insert into test2 values (?)");// 对随便1个字段操作表!
		int bufferSize = 0;
		// 对数据库的一个表插1亿条数据
		for (int i = 1; i <= 100000000; i++) {
			bufferSize++;
			pst.setString(1, "插入第" + i + "条数据");//
			pst.addBatch();
			// 每1w条数据批量处理一次提交到数据库
			if ((bufferSize + 1) % 1000 == 0) {
				pst.executeBatch();
				con.commit();
				pst.clearBatch();// 批量清除一下!
			}
			// System.out.println("第("+i+")条");
		}
		int[] result1 = pst.executeBatch();//批量執行,如果不批量執行到一定數據時會有可能會報錯
		con.commit();
		System.out.println("Length:" + result1.length);
		// 语句执行完毕,提交本事务
		Long endTime = System.currentTimeMillis();
		System.out.println("用时:" + sdf.format(new Date(endTime - startTime)));
		pst.close();
		con.close();
	}
}

 

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test2 {
	/**
	 *  节日短信 1
	 *  生活短信 2
	 *  诗歌短信3
	 *  校园短信 4
	 *  幸福短信 5
	 *  幽默短信 6
	 */
	public static void main(String[] args) throws Exception {
		String path = "D:/SMS/xydx.txt";
		int typeId = 1;
		String content = "";
		Connection conn = DBHelper.getConnection();
		// 关闭事务自动提交
		conn.setAutoCommit(false);
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		PreparedStatement pst = conn.prepareStatement("insert into sms(Id,content,createTime,typeId) values (?,?,?,?)");
		int bufferSize = 0;

		FileReader read = null;
		BufferedReader reader = null;
		read = new FileReader(new File(path));
		reader = new BufferedReader(read);
		content = reader.readLine();
		while (content != null) {
			bufferSize++;
			pst.setInt(1, 0);
			pst.setString(2, content);
			pst.setString(3, format.format(new Date()));//
			pst.setInt(4, typeId);
			pst.addBatch();
			if ((bufferSize + 1) % 1000 == 0) {
				pst.executeBatch();
				conn.commit();
				pst.clearBatch();// 批量清除一下!
			}
			content = reader.readLine();
		}
		int[] result = pst.executeBatch();// 批量執行,如果不批量執行到一定數據時會有可能會報錯
		conn.commit();
		//System.out.println("Length:" + result.length);
		System.err.println("成功");
		// 语句执行完毕,提交本事务
		DBHelper.close(null, pst, conn);
	}
}

 

0
4
分享到:
评论

相关推荐

    VC 演示如何使用insert语句批量向数据库插入数据.rar

    这个我感觉挺有用处吧,一般情况下,我们录入都是一条一条的,但信息量较大的时候,就需要批量插入数据了,我们可以先读取外部指定格式的文件,然后将数据转换为可插入的格式,然后使用insert批量向数据库中插入数据...

    kettle同步数据库所有的表数据到其他库.rar

    kettle同步数据库表数据到其他库的相同表名中,还可以指定特定的表名,只要在获取表中,输入特定表名,就只会同步输入的表

    ASP.net AJAX进度条实例(批量插入大量数据)

    该示例使用简单,完成插入指定数量的数据,ajax写入数据库,并显示精准进度,实时返回运行过程。对于大量插入数据库的操作,可以做到无刷,不超时; 目录结构: Css/style.css -------------进度条样式 Js/...

    C#通过NPOI库操作Excel,并将Excel数据导入Mysql数据库(自动建表)

    内容概要:本资源介绍了如何从利用Npoi库操作Excel,如相关读取单元格、行,介绍了如何对单元格数据格式进行操作,并分享了如何将Datatable数据导入Mysql数据库,方便项目管理。 阅读建议:此资源以如何读取Excel...

    QTableWidget批量添加数据、批量添加控件、分页跳转、定位到指定行、添加/插入/删除行的功能实现

    QTableWidget初始化、批量添加数据、分页跳转、上一页、下一页、首页、尾页、跳转操作、、批量添加QLable控件,制作LED指示灯、批量添加QPushButton控件,实现“打开”/“关闭”的切换、批量添加QCheckBox控件,实现...

    oracle数据库数据同步

    方法:解析XML文件,再调用odp.net组件批量提交,效率是批处理文件的4倍以上),我测试过100万数据批量插入在10秒以内(不包括解析文件的时间,根据机器的配置不同时间也不同)。 压缩包中包含的文件:数据库建表、...

    数据导出到Excel的6种方法(含QueryTable,数据库,ADO,内存批量插入,VSFlexGrid).rar

    3.通过连接Excel表,将Excel表作为数据库,创建选择集,然后将选择集批量插入Excel指定位置,速度比较快 4.将数组直接插入到Excel指定位置,速度比较快,因为数组数据在内存中,对于比较复杂的判断,可以先在数组中...

    JDBC连接MySQL数据库批量插入数据过程详解

    主要介绍了JDBC连接MySQL数据库批量插入数据过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    达梦数据库_SQL语言手册

    数据类型的实际最大长度由数据库页面大小决定,具体最 大长度算法如表 的区别在于前者长度不足时,系统自动填充空 格,而后者只占用实际的字节空间。 表 数据库页面大 实际最大长度 注:这个限制长度只针对建表的...

    使用C#开发的Access数据库创建、操作的源码项目工程

    ④实现了通用的sql语句执行帮助类(包含单条数据的插入、批量插入、事务处理、查询(指定内容查询、分页查询)、更新、删除等操作); ⑤可以直接获取Access数据库中的所有表名称及其表包含的所有列名称; ⑥包含了...

    使用C#开发的Sqlite数据库创建、操作的源码项目工程

    ④实现了通用的sql语句执行帮助类(包含单条数据的插入、批量插入、事务处理、查询(指定内容查询、分页查询)、更新、删除等操作); ⑤可以直接获取Sqlite数据库中的所有表名称及其表包含的所有列名称; ⑥包含了...

    C#在MySQL大量数据下的高效读取、写入详解

    最近由于工作的原因,经常需要对海量数据进行处理,做的数据爬虫相关,动辄千万级别的数据,单表几十个G 都是都是家常便饭。 那么主要的开发语言是C#,数据库使用的是MySQL。下面通过这篇文章我们来一起学习学习吧。

    mysql 从一个表中查数据并插入另一个表实现方法

    不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定导入字段。 本文就将以MySQL数据库为例,介绍如何通过SQL命令行将某个表...

    桌面数据库 v2019.06.001.zip

    可以编辑当前表数据,也可以编制任意常规表格(可以插入图片,目前尚不支持曲线图表等)。设计的表格,可以直接打印,也可导出到Excel。 3、完全自由的自动汇总: 想针对哪些项目进行汇总,可由用户自由定制,极为...

    php+mysqli实现批量执行插入、更新及删除数据的方法

    下面的代码只是批量插入数据,事实上,插入数据、更新数据、删除数据等可以混合一起执行。查询时使用该函数,读取数据有点不太一样,具体参考如下代码: &lt;?php //1、创建数据库连接对象 $mysqli = new MySQLi(...

    Access 2000数据库系统设计(PDF)---025

    1417.1 从其他应用或者向其他应用移动数据 1417.2 理解Access如何处理其他数据库文件格式的表 1427.2.1 识别PC数据库文件格式 1437.2.2 链接和导入外部 ISAM表 1437.2.3 用ODBC链接Visual FoxPro表 1457.2.4 处理...

    C#+Mysql将图片批量转为2进制并存入数据库中

    做项目需要,自己写的。可以批量选择一个文件夹中的图片并按指定序号存入数据库中,代码是C#写的,选图片时要注意逆向选,这样存到数据库中才是正确的顺序(可以看哪个显示选择文件的对话框,里面有文件顺序)

    mysql数据库my.cnf配置文件

    # 批量插入缓存大小, 这个参数是针对MyISAM存储引擎来说的。适用于在一次性插入100-1000+条记录时, 提高效率。默认值是8M。可以针对数据量的大小,翻倍增加。 myisam_sort_buffer_size = 1024M # MyISAM设置恢复表...

    Visual C++程序开发范例宝典 - 第8章

    实例266 利用INSERT语句批量插入数据 实例267 利用SELECT INTO生成临时表 8.3 更新数据 实例268 批量修改数据 实例269 将指定字段数据为空的记录添上数据 8.4 删除数据 实例270 删除单条数据 实例271 删除数据库中无...

Global site tag (gtag.js) - Google Analytics