JDBC建表的问题.

makeitbetter 2005-07-29 05:07:14
项目中遇到这么个问题:
拿抽取出来的上万条数据往一个空表A中里插的时候,速度非常慢,导致数据库总死机.
现在的变通想法是拿这些数据建成一个新表B,然后删掉A表,再把B更名为A.
我想问的是,用JDBC可以做这种删表,建表,改名的操作么?
如果能的话,能不能给点代码指点下?
另外,我的这个变通方法能不能在执行效率上有提高?请大家指教.
...全文
289 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhumeng459 2005-07-30
  • 打赏
  • 举报
回复
for(int i = 0 ; i<100 ; i++)
{
if(int j = 0 ; j<100 ; j++)
{
//在这里插入提取100条数据的代码,然后:
String strSqlDest ="insert into desttable (字段) values (?,..,,?)";
stmt.addBatch(strSqlDest);
}
stmt.executeBatch();//批处理
}
rower203 2005-07-30
  • 打赏
  • 举报
回复
上万条数据不多,还是查查"慢"的原因.
makeitbetter 2005-07-30
  • 打赏
  • 举报
回复
顶一下
有没有人在效率上给点建议?
laughsmile 2005-07-29
  • 打赏
  • 举报
回复
//source db connectin
connSrc = ....;
//dest db connectin
connDest = ...;
PreparedStatement st = null;
PreparedStatement st2 = null;
ResultSet rs = null;
String strSqlSource ="select ...from 源表";
String strSqlDest ="insert into desttable (字段) values (?,..,,?)";
int stmtNo = 1;
try {
st = connSrc.prepareStatement(strSqlSource);
rs = st.executeQuery();
st2 = connDest.prepareStatement(strSqlDest);
while (rs.next()) {
strTemp =rs.getString(字段);
st2.setString(stmtNo++, strTemp);
st2.addBatch();
++recordNum;
//防止jvm内存溢出
if (recordNum == 3000) {
recordNum = 1;
st2.executeBatch();
}
}
if (1 != recordNum)
st2.executeBatch();
} catch (Exception e) {
} finally {
connSrc.close();
connDest.close();
st.close();
st2.close();
rs.close();
}
makeitbetter 2005-07-29
  • 打赏
  • 举报
回复
那有没有别的好办法?
huangdeji 2005-07-29
  • 打赏
  • 举报
回复
我感觉你这么做只能使效率变低

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧