2011-10-19 51 views
2

我有2个数据库,第一个是Mysql数据库,它用于网站。第二个是Oracle数据库,它有我想要在网站上显示的数据,并且数据必须是新鲜的,我的意思是,我需要执行一个过程,以每隔30分钟从oracle数据库将数据迁移到Mysql。从oracle导入数据到mysql

因为我说的是60000行,以每30分钟迁移,我认为要做到这一点的最佳方式是一样的东西(考虑性能):

insert into mysql_db.table.field1, mysql_db.table.field2, mysql_db.table.field3 select oracle_db.table.field1, oracle_db.table.field2, oracle_db.table.field3 from oracle_db.table 

的Oracle数据库是在Windows和MySQL是在Linux(Ubuntu)上。

这可能吗?怎么样?别的,请给我一个不同的方式。

+1

我们可以采取一些措施阻止您通过PHP直接从Oracle获取数据吗? –

+0

直接查询Oracle DB有什么问题?更好的是,为什么你使用2个数据库? – NullUserException

+0

那么,oracle数据库包含敏感数据,网站是新的,并被写在RoR框架上,这个想法是不要触摸网站代码。并不直接从网站连接到Oracle数据库(安全问题导致我不知道如何管理oracle数据库) –

回答

-1

Oracle通过DBLink支持Oracle数据库之间的连接。但我不相信存在一些连接Mysql和Oracle的工具,它们可让您直接执行您提出的查询。

我可以建议你编写一个脚本(通过Python或Groovy中的示例)并将其安排在CRON Linux上(如果这是你的环境)。由于数据大小需要实现批量更新(具体针对您将在其中实现脚本的语言)

+0

thk为您的答案,我现在要阅读有关dblink,...我忘了指定SO的。编辑问题... –

+0

请注意,DBLINK仅适用于Oracle数据库 –

0

您也可以使用类似GoldenGate捕捉到甲骨文的变化,并将其应用到MySQL数据库,但如果这是你有一个使用情况下,产品的成本可能不是合理的,在这种情况下,可能只是一个简单的perl/php/python/etc脚本就可以做到这一点。

我用过mysql 4和oracle 9i之间的HSODBC链接,发现性能不如梦幻般,希望情况有所改善,如果是这样的话,这可能是一个可行的解决方案,但是你仍然需要这样做作为一项工作(在Oracle内部或外部),因为我还没有意识到从mysql到oracle的调用。