通过JDBC继续插入大量数据的最佳方法。批量插入或存储过程?

时间:2014-06-04 08:30:56

标签: java sql sql-server spring jdbc

我正在Spring通过Sql Server 2008 R2使用JDBC

我需要的是尽可能快地将大量数据插入数据库中的表。我想知道哪条路更好:

  1. 使用Spring批量插入提及here

  2. 在数据库中创建存储过程并在Java端调用

  3. 哪一个更好?

2 个答案:

答案 0 :(得分:0)

这取决于存储生产者将占用数据库时间的两件事,因为批处理会占用程序端的时间。所以取决于你更关心的是它真的起来了。我更喜欢批处理,以保持数据库的时间空闲,减少可能发生的错误。希望这可以帮助!

答案 1 :(得分:0)

Spring批处理是一个很好的框架,它可以用作数据库的ETL(提取,转换,加载)工具。

Spring批处理分3步执行任何导入作业: 1.阅读:从任何来源读取数据。它可以是任何其他数据库,任何文件(XML,CSV或任何其他)或其他任何内容 2.流程:处理输入数据,验证它并将其转换为您需要的对象。 3.保存:将数据保存到数据库或任何自定义文件格式

当您需要具有重启/恢复功能的长时间运行作业时,Spring批处理非常有用。 此外,任何直接数据库导入工具(如impdp for Oracle)都要慢得多。 Spring批处理将其状态保存在数据库中,因此这是一个开销并且耗费很长时间。但是,您可以破解弹出批处理并使其不在DB中保存状态,但它会导致重启/恢复功能丢失。

因此,如果速度是您的主要要求,您应该选择一些特定于数据库的选项。 但是如果你需要做一些验证和/或处理Spring批处理是一个很好的选择,你只需要正确配置它。 Spring批处理还提供了可伸缩性和数据库独立性。