`
ling凌yue月
  • 浏览: 338760 次
  • 性别: 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大批量导出数据,格式可以为xml或excel..do

    ### Java大批量导出数据至Excel或XML技术详解 #### 技术背景及应用场景 在企业级应用开发中,...通过上述内容的学习,开发者可以更好地掌握Java大批量数据导出的技术要点,从而更加高效地应对实际开发中的各种需求。

    java批量插入Oracle数据方法

    Java批量插入Oracle数据是一种高效的数据处理策略,尤其是在大数据量场景下。通过合理设计代码结构,利用`PreparedStatement`的批处理功能,可以显著提升数据插入的速度和系统的整体性能。在实践中,还需注意细节如...

    java导出大批量(百万以上)数据的excel文件

    - 延迟写入:在数据量非常大的情况下,可以采用延迟写入策略,先将数据缓存起来,达到一定阈值或者指定条件时才批量写入文件。 总结来说,Java导出大量数据到Excel文件时,需要关注内存管理、文件分片以及格式兼容...

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

    Java多线程编程实战之模拟大量数据同步是一个关键的话题,特别是在大数据处理和高并发系统中。这个主题涉及到了如何在Java环境中有效地管理和同步大量数据,确保数据一致性与系统的稳定性。 首先,我们要理解Java多...

    通过多线程任务处理大批量耗时业务并返回结果

    标题中的"通过多线程任务处理大批量耗时业务并返回结果"指的是在Java或其他支持多线程的编程语言中,如何有效地分配工作到多个线程,以便同时处理大量任务,并在任务完成后收集和处理结果。 描述中提到的"当监测到...

    大批量数据导出到XLS

    本主题聚焦于“大批量数据导出到XLS”,这是一个关于如何高效地将大量数据从网页或其他数据源导出到Excel(XLS)文件的过程。XLS是Microsoft Excel的一种文件格式,广泛用于存储和组织表格数据,便于分析和共享。 ...

    java多线程导出excel(千万级别)优化

    Java多线程导出Excel是处理大数据量时的一种高效策略,尤其在面对千万级别的数据时。传统的Apache POI库在处理大规模数据时可能会遇到栈溢出(StackOverflowError)和内存溢出(OutOfMemoryError)等问题,因为这些...

    大批量excel导出下载

    综上所述,这个大批量Excel导出工具类结合了Apache POI库,提供了读取和可能的写入Excel文件的能力,特别适合处理大量数据的导出场景,同时通过合理的数据结构和异常处理机制,保证了程序的稳定性和效率。

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

    项目文件"SparkOnHiveToEs_v1"可能包含了实现上述步骤的Java源代码,包括Spark配置、Hive连接、数据处理逻辑和ElasticSearch的写入操作。通过阅读和理解这些代码,可以深入学习如何在实际项目中整合这些技术。 ...

    springBoot+springBatch批量处理数据demo

    SpringBoot简化了Spring应用程序的配置和启动过程,而SpringBatch则是一个强大的批处理框架,它提供了丰富的功能来处理大规模数据。 首先,SpringBoot是基于Spring框架的一个快速开发工具,它通过内嵌的Tomcat...

    CSV大数据分批并压缩导出

    这是因为这些库在内存中构建整个工作簿模型,当数据量过大时,所需内存会迅速增加,可能导致Java虚拟机(JVM)崩溃。为了解决这个问题,可以采取分批导出策略。 分批导出是指将大数据集分割成若干小块,逐批处理和...

    管理大批量并发处理.zip

    在IT领域,特别是服务器端和分布式系统的设计与优化中,管理大批量并发处理是一项至关重要的任务。并发处理能够显著提高系统的效率,使多个任务或请求同时进行,从而充分利用硬件资源,提升整体性能。本压缩包文件...

    Java多线程读取大文本文件并批量插入MongoDB的实战代码

    Java多线程读取大文本文件并批量插入MongoDB的代码,文本文件,csv文件,可以结合POI改造使其支持excel。 适合做大量文本数据或日志文件入库的场景,大文本被拆分成多个线程处理,速度快。 批量插入MongoDB,存在则...

    Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQL

    Java大批量导入MySQL是一种高效的数据导入方式,使用MYSQL的LOAD DATA LOCAL INFILE语句可以快速地从一个文本文件中读取行,并装入一个表中。这种方式广泛应用于数据交换和导入,尤其是在数据量非常大的情况下。 ...

    Oracle环境下根据条件大批量删除数据小程序

    在Oracle数据库环境中,根据特定条件大批量删除数据是一项常见的任务,尤其在数据清理或系统维护时。本小程序的目的是提供一种高效且可控的方式来执行这样的操作。以下是对这个"Oracle环境下根据条件大批量删除数据...

    多线程处理数据

    本文将深入探讨多线程的概念、原理以及如何在Java中实现多线程,同时结合提供的"TestThread.java"文件,解析其代码结构和执行流程。 一、多线程基础 多线程是指在一个程序中存在多个执行流,这些执行流可以并行或...

    Excel百万级别数据的导入和导出

    在处理Excel数据时,尤其是涉及百万级别的数据量,效率和性能是至关重要的。"Excel百万级别数据的导入和导出"这一主题主要关注如何高效、有效地管理大量数据在Excel中的输入与输出。以下将详细讨论相关知识点: 1. ...

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

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

Global site tag (gtag.js) - Google Analytics