0

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

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

你能帮我想想其他方面的想法吗?

4

2 回答 2

0

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

如果您正在寻找 Java 特定选项,那么以下是我的偏好顺序

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

  2. Hibernate:ORM 不是为此而生的。但是,您可以同时使用StatelessSession批处理配置来实现最佳性能。

于 2011-02-14T13:32:26.910 回答
0

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

在 Oracle SQLLoader 的情况下(如@Pangea 所建议)

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

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

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

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

希望这可以帮助!

于 2011-02-14T14:25:09.307 回答