我使用Servlet上传CSV文件,并使用JDBC将其插入Oracle表中。我只需要在CSV文件中插入唯一值。如果CSV文件中的值已经在数据库表中,则不应将其插入表中。因此它应该只插入CSV文件中的唯一值。
答案 0 :(得分:4)
这些选项应该有助于避免额外的数据库调用来处理这种情况。
选项1:非常简单且需要最少的编码...但在没有全局事务边界时有效。
只需获取所有插入内容,如果出现任何Constraint异常,只需捕获它并执行“无”,循环到另一个值
选项2:每次从CSV读取行时,将其添加到集合中,在添加之前,只需检查对象是否已存在(例如:arrayList.contains(对象实例))并仅在没有对象时继续添加有类似的数据)。最后,做一个批量插入。 注意:如果数据很大,请选择批量插入的固定数据集。
答案 1 :(得分:1)
请考虑以下步骤:
答案 2 :(得分:0)
我猜测你在数据库中插入数据的方式是循环,你从csv中读取并插入数据库中,所以为什么不简单地做一个select satetement来检查值是否存在以及是否存在不要插入