我正在Spring
通过Sql Server 2008 R2
使用JDBC
。
我需要的是尽可能快地将大量数据插入数据库中的表。我想知道哪条路更好:
使用Spring
批量插入提及here
在数据库中创建存储过程并在Java端调用
哪一个更好?
答案 0 :(得分:0)
这取决于存储生产者将占用数据库时间的两件事,因为批处理会占用程序端的时间。所以取决于你更关心的是它真的起来了。我更喜欢批处理,以保持数据库的时间空闲,减少可能发生的错误。希望这可以帮助!
答案 1 :(得分:0)
Spring批处理是一个很好的框架,它可以用作数据库的ETL(提取,转换,加载)工具。
Spring批处理分3步执行任何导入作业: 1.阅读:从任何来源读取数据。它可以是任何其他数据库,任何文件(XML,CSV或任何其他)或其他任何内容 2.流程:处理输入数据,验证它并将其转换为您需要的对象。 3.保存:将数据保存到数据库或任何自定义文件格式
当您需要具有重启/恢复功能的长时间运行作业时,Spring批处理非常有用。 此外,任何直接数据库导入工具(如impdp for Oracle)都要慢得多。 Spring批处理将其状态保存在数据库中,因此这是一个开销并且耗费很长时间。但是,您可以破解弹出批处理并使其不在DB中保存状态,但它会导致重启/恢复功能丢失。
因此,如果速度是您的主要要求,您应该选择一些特定于数据库的选项。 但是如果你需要做一些验证和/或处理Spring批处理是一个很好的选择,你只需要正确配置它。 Spring批处理还提供了可伸缩性和数据库独立性。