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

Java 如何在Oracle数据库中仅插入CSV文件中的唯一值?,java,jdbc,Java,Jdbc,我使用Servlet上传CSV文件,并使用JDBC将其插入Oracle表中。我只需要在CSV文件中插入唯一的值。如果CSV文件中的值已在数据库表中,则不应将其插入表中。因此,它应该只插入CSV文件中的唯一值 考虑以下步骤: 从CSV文件中读取值 根据数据库搜索“值”的代码,如果未找到,则插入它 考虑以下步骤: 从CSV文件中读取值 根据数据库搜索“值”的代码,如果未找到,则插入它 我猜你在数据库中插入数据的方式是在一个循环中,你从csv中读取数据并插入数据库,那么为什么不简单地做一个select

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

考虑以下步骤:

  • 从CSV文件中读取值
  • 根据数据库搜索“值”的代码,如果未找到,则插入它
  • 考虑以下步骤:

  • 从CSV文件中读取值
  • 根据数据库搜索“值”的代码,如果未找到,则插入它

  • 我猜你在数据库中插入数据的方式是在一个循环中,你从csv中读取数据并插入数据库,那么为什么不简单地做一个select测试来检查该值是否存在,如果它没有插入它

    我猜你在数据库中插入数据的方式是在一个循环中,你从csv中读取数据并插入数据库,因此,为什么不简单地执行select测试来检查该值是否存在,如果不存在,则不插入该值

    这些选项应有助于避免额外的DB调用来处理这种情况

    选项1:非常简单,需要最少的编码。。。但在没有全局事务边界的情况下有效

    只要让所有的插入都继续,在任何约束异常的情况下,只要捕获它并“不做任何事情”,循环到另一个值

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

    这些选项应有助于避免为处理此情况而进行额外的DB调用

    选项1:非常简单,需要最少的编码。。。但在没有全局事务边界的情况下有效

    只要让所有的插入都继续,在任何约束异常的情况下,只要捕获它并“不做任何事情”,循环到另一个值

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

    谢谢您的帮助!我会试试这个。谢谢你的帮助!将尝试此操作。我的CSV文件具有批量值…因此不容易检查每个值并逐个插入..这是我将CSV文件上载到oracle的servlet代码..我的CSV文件具有批量值…因此不容易检查每个值并逐个插入..这是我将CSV文件上载到oracle的servlet代码..您需要意识到这一点这个问题与JSP/Servlet无关。在使用
    main()
    方法的普通Java应用程序中执行此操作时,会遇到完全相同的问题。您的问题在JDBC和数据库领域,您需要意识到这个问题与JSP/Servlet无关。在使用
    main()
    方法的普通Java应用程序中执行此操作时,会遇到完全相同的问题。您的问题在JDBC和数据库领域。