我们公司用的sqlservlet2000数据库.需要把远端的一个数据库的一个表里的记录(大约3万条)必须通过java程序复制到我们本地的一个数据库表里.我们做了一个程序.但是整个过程需要30分钟.如果等到这个时间的话,session都无效了.特郁闷!代码如下:
/********取处上大远程数据开始*********************/
public static boolean getSDdata(){
log.info("get sddata begin!");
boolean result=false ;
/***上大项目读取数据**/
try {
List list = getStudentBaseInfoService().getStudentBaseInfoList("select * from StudentBaseInfo order by dept_Id");
com.ins.util.StringToDate getdate=new com.ins.util.StringToDate();
// 清空班级人数。
String sql = "update AdminClass set rs=0, fkrs=0";
getSystemDAO().doUpdate(sql);
log.info("list size ="+list.size());
for(int i=0;i<list.size();i++)
{ log.info("i="+i);
StudentBaseInfo stt = (StudentBaseInfo)list.get(i);
//String strinsert = "insert into temptable (name) values('ddddd')";
String xh = stt.getPersNo().trim();
String xm = stt.getPersName().trim();
Integer intxb = stt.getPersSex().intValue();
String kh = stt.getIcChipNo().trim();
String bjbh = stt.getDeptId().trim();
String bjmc = stt.getDeptName();
String csny = getdate.getString(getdate.getDate(stt.getBirthd())).trim().substring(0,10);
Integer nj = stt.getNj().intValue();
Integer xz = stt.getNz().intValue();
/***以下是向学生表中Insert into DATA BEGIN**/
//第一步 添加院系.
//log.info("第一步 添加院系");
College college = null;
List college1list = (List)getCollegeDAO().findByChinese("FROM College c where c.yxmc=?", "上海大学");
//log.info("colloege1 = "+college1list.size());
if(college1list.isEmpty()){
college = new College();
college.setYxbh("yxbhforsd");
college.setYxmc("上海大学");
}else{
college = (College)college1list.get(0);
}
getCollegeDAO().save(college);
//第二步 添加班级.
//log.info("第二步 添加班级");
AdminClass adminClass = null;
//log.info("bjbh===开始"+i+"次"+bjbh);
AdminClass adminClassfind = getAdminClassDAO().findById(bjbh);
if(adminClassfind==null){
//log.info("第一次加入该班级");
adminClass = new AdminClass();
adminClass.setRs(1);//行政班人数加1.
if(!kh.equals("") || kh !=null){
adminClass.setFkrs(1);
}
}else{
//int countrs =0,countfkrs=0;//每一次统计人数用。
adminClass = adminClassfind;
adminClass.setRs(adminClassfind.getRs().intValue()+1);//行政班人数加1.
//log.info("kh="+kh);
if(!kh.equals("") && kh !=null){
adminClass.setFkrs(adminClassfind.getFkrs().intValue()+1);//发卡人数加1.
}
//log.info("第"+i+"次加入该班级");
}
//log.info("发卡人数:"+adminClass.getFkrs()+ "人数:"+adminClass.getRs());
if(adminClass.getFkrs().equals(adminClass.getRs())){
adminClass.setFkzt("完成");
}else{
adminClass.setFkzt("未完成");
}
adminClass.setBjbh(bjbh);
adminClass.setBjmc(bjmc);
adminClass.setNj(nj);
adminClass.setXz(xz);
adminClass.setZt(0);//0在校,1毕业。
adminClass.setCollege(college);
getAdminClassDAO().save(adminClass);
//第三步 添加学生.
//log.info("第三步 添加学生");
Student student = new Student();
student.setXh(xh);
student.setXm(xm);
student.setSex(getSex(intxb));
student.setKh(kh);
student.setCsny(getdate.getDate(csny));
student.setAdminClass(adminClass);
student.setAdr("无");//家庭住址。
student.setMm(xh);
student.setZt(1);//1在校。2毕业。3退学。4毕业。
student.setTnation(getTnation("01"));//民族编号
getStudentDAO().save(student);
//log.info("添加学生完成");
/***其它表添加学生相关信息*/
/**体段*/
Checks checks = new Checks();
checks.setStudent(student);
getChecksDAO().save(checks);
log.info("check save End!");
/**健康测试*/
TestScore testScore = new TestScore();
log.info("st.getxh():"+student.getXh());
testScore.setXh(student.getXh());
testScore.setZtqq(-100);
getTestScoreDAO().save(testScore);
log.info("TestScore save End!");
/**体育成绩*/
PeScore peScore = new PeScore();
peScore.setXh(student.getXh());
getPeScoreDAO().save(peScore);
log.info("PeScore save End!");
/***以下是向学生表中Insert into DATA END**/
}
//log.info("添加学生完成");
result = true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
log.info("get sddata end!");
return result;
}
/********取处上大远程数据结束*********************/
/********取处上大远程数据开始*********************/
public static boolean getSDdata(){
log.info("get sddata begin!");
boolean result=false ;
/***上大项目读取数据**/
try {
List list = getStudentBaseInfoService().getStudentBaseInfoList("select * from StudentBaseInfo order by dept_Id");
com.ins.util.StringToDate getdate=new com.ins.util.StringToDate();
// 清空班级人数。
String sql = "update AdminClass set rs=0, fkrs=0";
getSystemDAO().doUpdate(sql);
log.info("list size ="+list.size());
for(int i=0;i<list.size();i++)
{ log.info("i="+i);
StudentBaseInfo stt = (StudentBaseInfo)list.get(i);
//String strinsert = "insert into temptable (name) values('ddddd')";
String xh = stt.getPersNo().trim();
String xm = stt.getPersName().trim();
Integer intxb = stt.getPersSex().intValue();
String kh = stt.getIcChipNo().trim();
String bjbh = stt.getDeptId().trim();
String bjmc = stt.getDeptName();
String csny = getdate.getString(getdate.getDate(stt.getBirthd())).trim().substring(0,10);
Integer nj = stt.getNj().intValue();
Integer xz = stt.getNz().intValue();
/***以下是向学生表中Insert into DATA BEGIN**/
//第一步 添加院系.
//log.info("第一步 添加院系");
College college = null;
List college1list = (List)getCollegeDAO().findByChinese("FROM College c where c.yxmc=?", "上海大学");
//log.info("colloege1 = "+college1list.size());
if(college1list.isEmpty()){
college = new College();
college.setYxbh("yxbhforsd");
college.setYxmc("上海大学");
}else{
college = (College)college1list.get(0);
}
getCollegeDAO().save(college);
//第二步 添加班级.
//log.info("第二步 添加班级");
AdminClass adminClass = null;
//log.info("bjbh===开始"+i+"次"+bjbh);
AdminClass adminClassfind = getAdminClassDAO().findById(bjbh);
if(adminClassfind==null){
//log.info("第一次加入该班级");
adminClass = new AdminClass();
adminClass.setRs(1);//行政班人数加1.
if(!kh.equals("") || kh !=null){
adminClass.setFkrs(1);
}
}else{
//int countrs =0,countfkrs=0;//每一次统计人数用。
adminClass = adminClassfind;
adminClass.setRs(adminClassfind.getRs().intValue()+1);//行政班人数加1.
//log.info("kh="+kh);
if(!kh.equals("") && kh !=null){
adminClass.setFkrs(adminClassfind.getFkrs().intValue()+1);//发卡人数加1.
}
//log.info("第"+i+"次加入该班级");
}
//log.info("发卡人数:"+adminClass.getFkrs()+ "人数:"+adminClass.getRs());
if(adminClass.getFkrs().equals(adminClass.getRs())){
adminClass.setFkzt("完成");
}else{
adminClass.setFkzt("未完成");
}
adminClass.setBjbh(bjbh);
adminClass.setBjmc(bjmc);
adminClass.setNj(nj);
adminClass.setXz(xz);
adminClass.setZt(0);//0在校,1毕业。
adminClass.setCollege(college);
getAdminClassDAO().save(adminClass);
//第三步 添加学生.
//log.info("第三步 添加学生");
Student student = new Student();
student.setXh(xh);
student.setXm(xm);
student.setSex(getSex(intxb));
student.setKh(kh);
student.setCsny(getdate.getDate(csny));
student.setAdminClass(adminClass);
student.setAdr("无");//家庭住址。
student.setMm(xh);
student.setZt(1);//1在校。2毕业。3退学。4毕业。
student.setTnation(getTnation("01"));//民族编号
getStudentDAO().save(student);
//log.info("添加学生完成");
/***其它表添加学生相关信息*/
/**体段*/
Checks checks = new Checks();
checks.setStudent(student);
getChecksDAO().save(checks);
log.info("check save End!");
/**健康测试*/
TestScore testScore = new TestScore();
log.info("st.getxh():"+student.getXh());
testScore.setXh(student.getXh());
testScore.setZtqq(-100);
getTestScoreDAO().save(testScore);
log.info("TestScore save End!");
/**体育成绩*/
PeScore peScore = new PeScore();
peScore.setXh(student.getXh());
getPeScoreDAO().save(peScore);
log.info("PeScore save End!");
/***以下是向学生表中Insert into DATA END**/
}
//log.info("添加学生完成");
result = true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
log.info("get sddata end!");
return result;
}
/********取处上大远程数据结束*********************/
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货