1亿行相当多。您可以通过多种方式进行设计:REST服务器,JDBC读取,Spring
Batch,Spring集成,Hibernate,ETL。但最重要的是: time 。
无论选择哪种架构,最终都必须在
INSERTMySQL中执行这些操作。您的里程可能会有所不同,但仅是一个数量级:每秒插入2K次插入MySQL,将需要半天的时间来填充100M行(源)。
根据同一资料来源,
LOAD DATA INFILE每秒可处理约25K次插入(大约多10倍,大约需要一个小时的工作时间)。
话虽这么多,我建议:
使用可产生人类可读内容(或计算机可读内容,但您必须能够解析它)的本地Oracle数据库工具转储Oracle表
尽可能快地分析转储文件。也许
grep
/sed
/gawk
/cut
就足够了?生成与MySQL兼容的目标文件
LOAD DATA INFILE
(它是可配置的)使用上述命令在MySQL中导入文件
当然,您可以使用美观且可读的代码,经过单元测试和版本控制的Java语言来执行此操作。但是,有了如此大量的数据,您就必须要务实。
那是初始负载。在那之后,Spring
Batch将是一个不错的选择。如果可以的话,请尝试将您的应用程序直接连接到两个数据库,这又会更快。另一方面,出于安全原因,这可能是不可能的。
如果您想变得非常灵活并且不直接将自己绑定到数据库中,请在Web服务后面公开输入(Oracle)和输出(MySQL)(REST也可以)。Spring集成将为您带来很大帮助。



