如何将大量数据导入生产数据库?(我们正在使用Java)

如何将大量数据导入生产数据库?(我们正在使用Java),java,spring,data-import,Java,Spring,Data Import,我们必须从Web服务、平面文件和其他外部源将大量数据导入生产数据库。 我们使用spring批处理来实现这一点 其中一个主要问题是,其中一些数据相互关联,但不会同时导入。 另一个主要问题是数据量很大,因此我无法真正进行大型事务并在出现问题时回滚 我该怎么做呢?假设执行此操作时数据库不在serevice中:备份数据库、关闭所有约束检查、导入数据、重新启用约束。如果所有操作都失败了,那么至少您有备份可以依靠。最好的方法是将数据加载到运行中的应用程序不使用的“保留”表中。然后看看在应用程序最不繁忙的时候

我们必须从Web服务、平面文件和其他外部源将大量数据导入生产数据库。 我们使用spring批处理来实现这一点

其中一个主要问题是,其中一些数据相互关联,但不会同时导入。 另一个主要问题是数据量很大,因此我无法真正进行大型事务并在出现问题时回滚


我该怎么做呢?

假设执行此操作时数据库不在serevice中:备份数据库、关闭所有约束检查、导入数据、重新启用约束。如果所有操作都失败了,那么至少您有备份可以依靠。

最好的方法是将数据加载到运行中的应用程序不使用的“保留”表中。然后看看在应用程序最不繁忙的时候,如何使用将数据复制到应用程序表中

这种方法的优点是

  • 将数据加载到保留表中不会对应用程序表产生锁定影响
  • 根据您的数据库配置,只需对事务日志进行最少(或不进行)写入即可完成“选择到”操作,从而使其非常高效

  • 导入期间数据库是否处于生产状态?您的数据库是什么?表引擎是什么(如果适用)?它是一个网站,数据库正在为其提供数据。我们不能让它离线。我们使用的是SQL Server 2K8,这是一个网站数据库。无法做到这一点:(uuh)零停机时间奇美拉…我想这是不可能实现的。难道你不能只处理一个副本,然后在某个时刻将配置从DB1切换到DB2吗?我将使用这个解决方案。但是,在进行“选择进入”之前,我必须进行一些验证,有些操作将被更新或停用(我不会删除任何内容)。感谢您的意见:)