SQL sever2000数据库,数据库和项目在两台机器上,入库操作是插入数据到数据库服务器上,一次的入库操作大概要20几万条记录,目前是用sql的insert语句,在程序里循环的插入数据。但是,最近在入库的时候,本来要入23万条记录的,结果实际插入表中的记录只有15万条,但是入库的操作却显示操作成功了。这是什么原因呢,以前都没有出现过这种问题呢。查了下论坛里的帖子,似乎是因为插入操作过于频繁,而且每一条操作都执行一个insert语句,没有写存储过程。本应20万的记录,变成了15万,数据丢失的原因是什么,应该怎么解决?请大家多多指教~
代码一定有问题,比如失败也提示成功而巳
既然二十多万条,就该用批量去处理<或许会有TRIGGER等逻辑吧,也可改为批量>
@name varchar,
@age int,
@sex varchar
AS
insert into test00 values(@name,@age,@sex)
GO然后在java中调用这个过程,来完成100万条记录的插入操作:
try
{
conn = Conn.getConnection(EnpSellerMgr.class);//建立数据连接
stmt = conn.createStatement();
CallableStatement callsta;
String st="{call dbo.proc_test(?,?,?)}";
callsta=conn.prepareCall(st);
for(int i=1;i<=1000000;i++){
callsta.setString(1,"hh");
callsta.setInt(2,18);
callsta.setString(3,"f");
callsta.execute();
}
callsta.close();
}
catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (stmt != null)
stmt.close();
if (conn != null)
Conn.freeConnection(conn);
} catch (Exception localException1) {
}
}这个程序执行下来,当插入记录达到60多万条的时候,SQLSEVER2000就报object has been closed 。然后插入操作停止。
请各位指教,到底怎么才能顺利的实现大量数据的插入呢??
用事务写。等执行完了。看看countNum是几