在Java应用程序中导入批量数据

时间:2011-02-14 13:19:34

标签: database hibernate spring dbimport

我在Java项目中将大量数据从.csv文件导入数据库。我有兴趣了解实现这一目标的最佳方法。

  • 绝对是其中一个选择 使用java应用程序调用存储 程序。
  • 我能想到的第二个选择 因为我们已经在使用了 spring,spring-jdbc对可以帮助我们 太
  • 目前我们正在使用spring-hibernate对在应用程序级别完成此操作(这是我认为不是正确的方法)

请你帮我解决一下频谱的另一端吗?

2 个答案:

答案 0 :(得分:0)

最佳选择是在使用大量数据进行批量操作时使用数据库的本机支持。如果Oracle那么SQL*Loader。如果Postgres然后他们有COPY命令。

如果您正在寻找Java特定选项,那么下面是我的首选订单

  1. JDBC:使用batch operations支持,但这有一个限制,即批处理操作中的任何失败都会使整个流程短路

  2. Hibernate:ORM不适用于此。但是,您可以同时使用StatelessSessionbatch configuration来获得最佳效果。

答案 1 :(得分:0)

在我看来,应使用数据库功能解决此类情况(批量导入):

对于Oracle SQLLoader(由@Pangea建议)

如果是MS SQL Server BCP(批量复制)

如果您正在寻找基于@ Java的方法,那么我回应@Pangea 除此之外 您可以将批量插入分解为子批次并同时运行它们以获得更好的性能。

例如:如果您要插入10k记录,那么您可以构建每批200条记录并同时插入5批记录。

在这种情况下,您需要代码来跟踪每个子批次。

希望这有帮助!