1

我们必须将大量数据从 Web 服务、平面文件和其他外部来源导入生产数据库。我们正在使用 Spring Batch 来执行此操作。

主要问题之一是其中一些数据相互关联,但不会同时导入。另一个主要问题是数据量很大,所以我不能真正做一个巨大的事务,如果出现问题就回滚。

我怎么能那样做?

4

2 回答 2

2

最好的办法是将数据加载到正在运行的应用程序不使用的“保存”表中。然后查看在应用程序最不忙时使用SELECT INTO将数据复制到应用程序表中。

这种方法的优点是

  1. 将数据加载到保存表中不会对您的应用程序表产生锁定影响
  2. 根据您的数据库配置,SELECT INTO 可以通过最少(或不)写入事务日志来完成,使其非常高效
于 2012-07-10T13:58:04.490 回答
1

假设您执行此操作时数据库未处于服务状态:备份数据库,关闭所有约束检查,导入数据,重新打开约束。如果一切都失败了,那么至少你有备份可以依靠。

于 2012-07-10T13:11:22.207 回答