我正在使用java来执行一些SQL查询。其中一些是从一个数据库(A)获取数据并将数据存储在另一个数据库(B)的表中。完成过程后,我从数据库(B)的表中删除所有数据。我每5分钟重复一次这个过程。 代码:在查询中使用不同关键字的重复条目whi
String sql = "delete from newtable";
stmt5 = conn.prepareStatement(sql);
stmt5.executeUpdate(sql);
String sql_1 = "select distinct tbl_alm_log_2000000000.Csn, tbl_alm_log_2000000000.IsCleared, tbl_alm_log_2000000000.Id,tbl_alm_log_2000000000.NEType, tbl_alm_log_2000000000.OccurTime, tbl_alm_log_2000000000.hostIP, tbl_alm_log_2000000000.ExtendInfo From fmdb.dbo.tbl_alm_log_2000000000 Where IsCleared = 0";
ResultSet rs = stmt_1.executeQuery(sql_1);
String sql_2 = "insert into newtable (CSN, IsCleared, Id, NEType, OccurTime, hostIP) values(?,?,?,?,?,?)";
conn.setAutoCommit(false);
PreparedStatement ps = conn.prepareStatement(sql_2);
final int batchSize = 1000;
int count = 0;
while (rs.next()){
ps.setString(1, rs.getString(1)); //csn
ps.setString(2, rs.getString(2)); //iscleared
ps.setString(3, rs.getString(3));//id
ps.setString(4, rs.getString(4));//netype
ps.setString(5, rs.getString(5));//occurtime
ps.setString(6, rs.getString(6));//hostip
ps.addBatch();
if(++count % batchSize == 0) {
ps.executeBatch();
}
}
ps.executeBatch(); // insert remaining records
conn.commit();
ps.close();
它运行完美10点-20运行,然后给出了“重复输入错误的‘价值’,在CSN,因为它是主键”。 我在查询中添加了Distinct关键字,它在10-20次运行后仍然出现此错误。
注意:我从newtable中删除数据,因为它始终在一个空表中添加。
建议我去错了。
检查是否有场'ExtendInfo'不同的值。 'insert'中没有使用这个字段。如果你不需要它。从'select'中删除该字段。 – Viki888
我删除了不兼容的数据库标签。请标记您真正使用的数据库。 –
@ viki888它正在使用,但我删除了那部分,因为我认为它不涉及这个问题。我应该把它放回去吗? –