`
ling凌yue月
  • 浏览: 334277 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

java大批量处理数据代码

    博客分类:
  • java
阅读更多
连接数据库程序:
public class CreateODBC {
	public static Connection getconn(){
		Connection conn = null;
		String driver = "com.mysql.jdbc.Driver";

		String url = "jdbc:mysql://localhost:3306/db?&characterEncoding=UTF-8";
		String user = "root";
		String password = "root";
		try {
			Class.forName(driver);
			conn=DriverManager.getConnection(url, user, password);
		} catch(Exception e) {
			e.printStackTrace();
		} 
		return conn;
	}
}

处理程序:
public class DoSql {
	/**
	 * 每次取存的数量
	 */
	static int rows = 5000;

	/**
	 * items总条数
	 */
	static int count = 0;
	/**
	 * 得到一个数据库连接
	 */
	static Connection con = null;
	/**
	 * 得items总条数的statement对象
	 */
	static Statement smSelectCount = null;
	/**
	 * 保存items总条数的结果
	 */
	static ResultSet rsSelectCount = null;
	/**
	 * 从items 查name、nums的statement对象
	 */

	static Statement smSelect = null;
	/**
	 * 保存从items 查name、nums的结果
	 */
	static ResultSet rsSelect = null;

	/**
	 * 将name(nums),name(nums)保存到orders表中的statement对象
	 */
	static Statement smUpdate = null;

	/**
	 * 查询orders表中是否已存在tostr(如果存在追加上去)
	 */
	static Statement smSelectName = null;
	/**
	 * 保存 查询orders表中是否已存在tostr结果
	 */
	static ResultSet rsSelectName = null;

	static String tostr = null;

	/**
	 * @param args
	 * @describe 将tiems 表中的name字段、nums字段
	 *           转换成name(nums),name(nums)...的形式,存到sdb_orders表的tostr字段
	 */

	public static void main(String[] args) {
		try {
			count = getCount();

			System.out.println("总条数为:" + count);
			int count_2 = count % rows;
			int times;
			if (count_2 == 0) {
				times = count / rows;
			} else {
				times = count / rows + 1;
			}
			int i = 0;
			for (i = 0; i < times; i++) {
				con=CreateODBC.getconn();
				smSelect = con.createStatement();
				smUpdate = con.createStatement();
				String sql = getSelectSql(i * rows);
				System.out.println(i + "、" + sql);
				rsSelect = smSelect.executeQuery(sql);
				int co = 0;
				while (rsSelect.next()) {
					tostr = rsSelect.getString("name") + "("
							+ rsSelect.getString("nums") + ")";
					//System.out.println(tostr);
					String getTostr = "SELECT order_id,tostr from sdb_orders where order_id ="
							+ rsSelect.getString("order_id") + ";";
					smSelectName = con.createStatement();
					rsSelectName = smSelectName.executeQuery(getTostr);
					while (rsSelectName.next()) {
						// 如果tostr不为空,就追加上去
						if (!((rsSelectName.getString("tostr")=="") || (rsSelectName
								.getString("tostr")==null))) {
							tostr +=(rsSelectName.getString("tostr")=="")?(""):("," + rsSelectName.getString("tostr"));
				
						}
					}
					String insertSql = "UPDATE sdb_orders SET tostr ='"
							+ escap(tostr) + "'WHERE order_id= '"
							+ rsSelect.getInt("order_id") + "';";
					System.out.println("插入的第" + (i * rows + co) + "条:"
							+ insertSql);
					smUpdate.executeUpdate(insertSql);
					co++;
				}
				rsSelectCount.close();
				rsSelect.close();

				smSelectCount.close();
				smSelect.close();
				smUpdate.close();
				con.close();
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			try {
				rsSelectCount.close();
				rsSelect.close();

				smSelectCount.close();
				smSelect.close();
				smUpdate.close();
				con.close();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		} finally {
			
		}

	}

	/**
	 * 得到 items 的总条数
	 * 
	 * @return 总条数
	 * @throws SQLException
	 */
	private static int getCount() throws SQLException {
		con = CreateODBC.getconn();
		smSelectCount = con.createStatement();
		String getcount = "select count(*) from items;";
		rsSelectCount = smSelectCount.executeQuery(getcount);
		while (rsSelectCount.next()) {
			count = rsSelectCount.getInt(1);
		}
		rsSelectCount.close();
		smSelectCount.close();
		return count;
	}

	/**
	 * 选出从m 开始的rows条数据
	 * 
	 * @param m
	 *            开始行
	 * @return 该sql语句
	 */
	public static String getSelectSql(int m) {
		String str = "";
		str = "SELECT name,nums,order_id FROM items LIMIT " + m + ","
				+ rows;
		return str;
	}

	/**
	 * 将字符串str中的'转义
	 * 
	 * @param str
	 *            要转义的字符串
	 * @return 转义后的字符串
	 */
	public static String escap(String str) {
		str = str.replace("'", "\\'");
		return str;
	}
}

本人菜鸟,请斧正
分享到:
评论
1 楼 yuechengkun 2012-09-11  
这也算是大批量处理? 不靠边......

相关推荐

    java批量插入Oracle数据方法

    java批量插入方法代码和一些注释

    Java多线程编程实战之模拟大量数据同步

    主要介绍了Java多线程编程实战之模拟大量数据同步,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Java实现excel大数据量导入

    主要为大家详细介绍了Java实现excel大数据量导入,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    大批量数据批量入库时的边界问题.txt

    页面excle表导入大批量数据批量入库的边界值判断,假设excle表10万数据,5000为一批,10万是可以被5000整除的,那么此时整除的边界要进行处理(具体参见代码,以代码为列子阐述),否则会可能将会在最后一次出现null...

    项目实战——Spark将Hive表的数据写入ElasticSearch(Java版本)

    项目实战:Java一站式解决Hive内用Spark取数,新建ES索引,灌入数据,并且采用ES别名机制,实现ES数据更新的无缝更新,底层采用Spark计算框架,数据较快。

    java中JDBC实现往MySQL插入百万级数据的实例代码

    主要介绍了java中JDBC实现往MySQL插入百万级数据的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

    Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?今天小编通过本教程给大家介绍下

    java基础学习+java

    Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新...

    java学习3.zip

    Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新...

    java学习2.zip

    Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新...

    用JAVA写的一个异步多线程批处理的组件

    为了方便以后的开发,写了个异步多线程批处理的组件 具体用法见代码里的说明。很多时候都需要处理大批量数据,以后就方便多了

    eaasyexcel批量导入+校验

    EasyExcel重写了POI对07Excel的解析,解决...2.重写了07版本的Excel解析代码,减低内存消耗,可以有效避免OOM 3.只能操作Excel 4.不能读取图片 5.读写Excel,数据在excel文件,程序&lt;实体类,MAP&gt;两个载体之间 互相流转

    JAVA文件传输(论文+源代码).zip

    在详细功能设计中抽取出各个功能模块共性的具体功能,对其进行了详细的描述设计,这样各功能模块在后来的实际编码中能够快速地实现,对于服务器管理中的数据维护、大批量录入修改等功能能够较好地实现预计功能。...

    java8集合源码分析-datalake-code:2020年CCFBDCI-阿里云-数据湖的元信息发现与分析比赛ranks1st代码

    本赛题背景是目前大数据研究热点数据湖,通过提供一大批未知的目录和CSV文件数据,要求我们能进行元数据的发现和分析。 查询格式为 ${表名} ${比较列} ${操作列} ${比较值} ${like匹配列} ${like匹配类型} ${like...

    安卓手机java源码阅读器-Meltdown:用于发烧的AndroidRSS阅读器

    大批量消费者而设计。 我的 #1 目标是让这个超级快。 电池使用量低 - 使用警报服务和后台进程每十五分钟刷新一次列表,使用“不精确重复”模式避免过度唤醒。 压缩下载 - 如果您的 Apache 已配置,它将使用 gzip ...

    DataGenerator:数据生成器,轻松生成模拟数据,接口联调快速Demo

    单元测试时需要大批量测试数据,但手工填充相当消耗时间。 但不论哪种场景,本插件的本质,都是想要你能快速给VO填充一些数据,之后可以再使用JSON工具转成JSON字符串,让你达到偷懒的目的。 现在,你只需要一

    Oracle出现超出打开游标最大数的解决方法

    Java代码在执行conn.createStatement()和conn.prepareStatement()的时候,实际上都是相当与在数据库中打开了一个cursor。尤其是,假如你的createStatement和prepareStatement是在一个循环里面的话,就会非常轻易出现...

    Mybatis批量更新三种方式的实现

    主要介绍了Mybatis批量更新三种方式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Hibernate实战(第2版 中文高清版)

     2.3.3 生成Java源代码   2.4 与Java EE服务整合   2.4.1 与JTA整合   2.4.2 JNDI绑定的SessionFactory   2.4.3 JMX服务部署   2.5 小结   第3章 领域模型和元数据   3.1 CaveatEmptor应用程序   ...

    java中负数的源码反码补码-interviews:CS面试学习表

    java中负数的源码反码面试学习表 我用作复习的快速学习表 :grinning_face_with_smiling_eyes: 此外,除了这些简单的主题之外,计算机科学还有更多内容! 有大量在线资源可以拓宽和深化您的核心 CS 知识; 就是这样一...

Global site tag (gtag.js) - Google Analytics