java 处理大批量数据_java大批量处理数据代码

这段Java代码展示了如何处理大批量数据,通过每次处理5000条记录,查询items表并更新sdb_orders表的tostr字段。代码包括获取数据库连接、创建Statement对象、执行SQL查询与更新操作,以及处理数据转义。
摘要由CSDN通过智能技术生成

Java代码

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;  } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值