我正在为一家公司开展一个项目,我需要将其以前的数据迁移到一个新系统中。显然这两种结构是完全不同的,我正在使用休眠进行数据库操作,并且对迁移数据的最佳方法感到困惑。我应该使用休眠,我应该编写存储过程,还是有其他选择?欢迎任何聪明的想法。
5 回答
在过去尝试过这两种方法后,我可以肯定地说这不是 ORM 设计的场景,也不是它蓬勃发展的场景。您最终不得不构建两组不同的对象,并且很难获得大规模迁移所需的效率。我能想到的使用 hibernate 之类的东西的唯一原因是,如果您要构建一个系统,该系统将永久位于两个系统之间以集成它们,但这听起来是相对短期的。
我对 Python 脚本、一堆 SQL 和一些用于转换数据的 Python 对象的结果非常满意。
Hibernate 不能很好地处理存储过程——它不是“天作之合”。如果您的 ORM 已经被映射出来,并且您已经设置了“原样”和“未来”对象,请使用普通的休眠方法将数据写入新布局。
如果您被迫采用 StoredProcedure 方式,那么您可以决定是否要忍受痛苦,并在存储过程中编码您的转换 - 这样您的所有迁移脚本将保持在一起。
就像另一张海报所说的那样,像 Python 这样的脚本语言在这里可以很好地为您服务——它对我也很有效。
就我个人而言,我可能会为此使用像 SSIS 之类的 ETL 工具(如果您从 SQL Server 前往或前往 SQL Server),大量数据的移动是 ETl 工具的设计和优化目的。
虽然我不确定“最佳”,但如果我处于您的位置,我更愿意使用 Hibernate 或类似的 ORM。原因是你有一个对象层次结构可以在两个数据库之间使用。如果模式非常相似,那么简单的 SQL 脚本可能会更容易。这实际上取决于您的情况以及具体情况。
编辑:我真的需要一些早晨的咖啡因......
在我之后发帖的两个人注意到了我试图记录的内容。如果模式已定义,您已经拥有对象或擅长逆向工程工具,那么休眠是一种简单的方法。但是,如果它是一次性的,那么脚本绝对是更好的选择。