连接数据库程序:
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;
}
}
本人菜鸟,请斧正
分享到:
相关推荐
java批量插入方法代码和一些注释
主要介绍了Java多线程编程实战之模拟大量数据同步,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要为大家详细介绍了Java实现excel大数据量导入,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
页面excle表导入大批量数据批量入库的边界值判断,假设excle表10万数据,5000为一批,10万是可以被5000整除的,那么此时整除的边界要进行处理(具体参见代码,以代码为列子阐述),否则会可能将会在最后一次出现null...
项目实战:Java一站式解决Hive内用Spark取数,新建ES索引,灌入数据,并且采用ES别名机制,实现ES数据更新的无缝更新,底层采用Spark计算框架,数据较快。
主要介绍了java中JDBC实现往MySQL插入百万级数据的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?今天小编通过本教程给大家介绍下
Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新...
Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新...
Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新...
为了方便以后的开发,写了个异步多线程批处理的组件 具体用法见代码里的说明。很多时候都需要处理大批量数据,以后就方便多了
EasyExcel重写了POI对07Excel的解析,解决...2.重写了07版本的Excel解析代码,减低内存消耗,可以有效避免OOM 3.只能操作Excel 4.不能读取图片 5.读写Excel,数据在excel文件,程序<实体类,MAP>两个载体之间 互相流转
在详细功能设计中抽取出各个功能模块共性的具体功能,对其进行了详细的描述设计,这样各功能模块在后来的实际编码中能够快速地实现,对于服务器管理中的数据维护、大批量录入修改等功能能够较好地实现预计功能。...
本赛题背景是目前大数据研究热点数据湖,通过提供一大批未知的目录和CSV文件数据,要求我们能进行元数据的发现和分析。 查询格式为 ${表名} ${比较列} ${操作列} ${比较值} ${like匹配列} ${like匹配类型} ${like...
大批量消费者而设计。 我的 #1 目标是让这个超级快。 电池使用量低 - 使用警报服务和后台进程每十五分钟刷新一次列表,使用“不精确重复”模式避免过度唤醒。 压缩下载 - 如果您的 Apache 已配置,它将使用 gzip ...
单元测试时需要大批量测试数据,但手工填充相当消耗时间。 但不论哪种场景,本插件的本质,都是想要你能快速给VO填充一些数据,之后可以再使用JSON工具转成JSON字符串,让你达到偷懒的目的。 现在,你只需要一
Java代码在执行conn.createStatement()和conn.prepareStatement()的时候,实际上都是相当与在数据库中打开了一个cursor。尤其是,假如你的createStatement和prepareStatement是在一个循环里面的话,就会非常轻易出现...
主要介绍了Mybatis批量更新三种方式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
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中负数的源码反码面试学习表 我用作复习的快速学习表 :grinning_face_with_smiling_eyes: 此外,除了这些简单的主题之外,计算机科学还有更多内容! 有大量在线资源可以拓宽和深化您的核心 CS 知识; 就是这样一...