Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 保持通过JDBC插入大量数据的最佳方法。批插入还是存储过程?_Java_Sql_Sql Server_Spring_Jdbc - Fatal编程技术网

Java 保持通过JDBC插入大量数据的最佳方法。批插入还是存储过程?

Java 保持通过JDBC插入大量数据的最佳方法。批插入还是存储过程?,java,sql,sql-server,spring,jdbc,Java,Sql,Sql Server,Spring,Jdbc,我正在使用Spring通过JDBC连接到sqlserver2008r2 我所需要的就是尽可能快地将大量数据插入数据库中的表中。我想知道哪种方式更好: 使用Spring批量插入 在数据库中创建存储过程并在Java端调用它 哪一个更好?这取决于存储的两件事生产者将占用数据库时间,而批处理将占用程序端的时间。因此,取决于你更关心什么,这实际上取决于你自己。我更喜欢批处理,因为它可以使数据库不受时间限制,从而减少可能发生的错误。希望这有帮助 springbatch是一个优秀的框架,它可以用作数据库的ET

我正在使用
Spring
通过
JDBC
连接到
sqlserver2008r2

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

  • 使用
    Spring
    批量插入

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


  • 哪一个更好?

    这取决于存储的两件事生产者将占用数据库时间,而批处理将占用程序端的时间。因此,取决于你更关心什么,这实际上取决于你自己。我更喜欢批处理,因为它可以使数据库不受时间限制,从而减少可能发生的错误。希望这有帮助

    springbatch是一个优秀的框架,它可以用作数据库的ETL(提取、转换、加载)工具

    Spring batch将任何导入作业分为3个步骤: 1.读取:从任何源读取数据。它可以是任何其他数据库、任何文件(XML、CSV或任何其他文件)或任何其他文件 2.处理:处理输入数据,验证数据,并将其转换为所需的对象。 3.保存:将数据保存到数据库或任何自定义文件格式

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

    所以,如果速度是您的首要要求,那么您应该选择一些特定于数据库的选项。
    但是,如果您需要进行一些验证和/或处理,SpringBatch是一个很好的选择,您只需要正确地配置它。此外,Spring batch还提供了可扩展性和数据库独立性。

    您可能有更好的机会在上获得更全面的答案。对不起,我说的是Spring JDBC,而不是Spring batch