导入时需要判断重复的数据. 根据编号唯一判断.提示哪些编号导入失败,重复的不能导入.
import java.io.File;
import
java.io.IOException;
import jxl.Workbook;
import jxl.Sheet;
import jxl.Cell;
import jxl.read.biff.BiffException;
public class ReadExcel {
public static void main(String[] args) throws Exception {
Workbook workbook=null;
try {
workbook = Workbook.getWorkbook(new File("D:\\abc.xls"));
} catch (BiffException e) {
e.printStackTrace();
} catch (
IOException e) {
e.printStackTrace();
}
Sheet sheet=workbook.getSheet(0);
Cell[] cell=sheet.getRow(0);
StringBuffer s=new StringBuffer("");
s.append("insert into IOAS_CAPITALASS(crad_id,institutions_1,asset_category)values(");
int row=sheet.getRows();
for(int i=2;i<row;i++){
StringBuffer r=new StringBuffer(s);
Cell[] cell2=sheet.getRow(i);
for(int j=0;j<cell2.length;j++){
if(j<cell2.length-1){
r.append("'"+cell2[j].getContents().trim()+"',");
}else{
r.append("'"+cell2[j].getContents().trim()+"'");
}
}
r.append(")");
System.out.println(r.toString());
//WorkConnection workconn=new WorkConnection();
//workconn.insert(r.toString());
}
}
}
这个是导入d盘下abc.xls,现在要判断导入的xls里是否有重复数据(重复数据通过crad_id判断),有的话把crad_id输出,代码应该怎么改,希望高手能说下。谢谢
------解决方案--------------------
目标表的数据量大么?如果不是很大,考虑先把所有crad_id选择出来,放入 Set 中,那么导入时就可以比对下再进行导入了。
如果数据量很大,就只能靠数据库关于crad_id的唯一索引来处理了;那么执行insert时要1条条执行,不要放在一个事务中。insert失败是可以利用返回值来判断的。
------解决方案--------------------JDBC 在insert的时候提供的返回值的,根据返回值判断是否成功了
------解决方案--------------------你的意思是导入文件里的crad_id和数据库的crad_id重复?那你可以这样处理。
那如果导入文件里本身就用重复的crad_id呢?总不能插入每一条之前都就重新查询数据库吧。
最好catch下,如果返回的是主键冲突的key值,就输出“该条数据信息已经存在”,然后continue执行。