如何仅从Oracle数据库中的CSV文件中插入唯一值?

时间:2011-09-02 06:54:40

标签: java jdbc

我使用Servlet上传CSV文件,并使用JDBC将其插入Oracle表中。我只需要在CSV文件中插入唯一值。如果CSV文件中的值已经在数据库表中,则不应将其插入表中。因此它应该只插入CSV文件中的唯一值。

3 个答案:

答案 0 :(得分:4)

这些选项应该有助于避免额外的数据库调用来处理这种情况。

选项1:非常简单且需要最少的编码...但在没有全局事务边界时有效。

只需获取所有插入内容,如果出现任何Constraint异常,只需捕获它并执行“无”,循环到另一个值

选项2:每次从CSV读取行时,将其添加到集合中,在添加之前,只需检查对象是否已存在(例如:arrayList.contains(对象实例))并仅在没有对象时继续添加有类似的数据)。最后,做一个批量插入。 注意:如果数据很大,请选择批量插入的固定数据集。

答案 1 :(得分:1)

请考虑以下步骤:

  1. 从CSV文件中读取值
  2. 针对数据库搜索“值”的代码,如果未找到,则插入它。

答案 2 :(得分:0)

我猜测你在数据库中插入数据的方式是循环,你从csv中读取并插入数据库中,所以为什么不简单地做一个select satetement来检查值是否存在以及是否存在不要插入