我正在开发一个 Web 应用程序,该 Web 应用程序将使用 MySQL。
现在我需要将客户的 Oracle 数据库复制到 MySQL,只涉及几个表..一个表最多可以有200-300万行。
我在此 Oracle 上仅具有 SELECT 权限,因此不要要求我在 Oracle 机器上安装任何类型的服务。但是,我对 MySQL 端拥有完全控制权。
复制只有一种方式(从 Oracle 到 MySQL)。我可以编写一个简单的脚本来截断 MySQL 表并每晚重新填充它,但我认为这非常低效,一定有更好的方法。
有没有免费的工具可以使用?昂贵的数据库复制系统肯定不行。
答案1
如果您正在开发 web 应用程序,我还将创建一个脚本 php/asp/whatever,用于查询 oracle 表并将您想要的数据导入 mysql - 每隔 X 分钟/小时(cron 或 Windows 服务)。
您可以通过将最后导入的项目(oracle 表唯一键('id'))保存在“特殊”mysql 表中来跟踪上次运行时导入的数据,该表将指示您上次中断的位置以及现在需要导入的数据。
答案2
听起来你可能只能通过 SELECT 来截断和填充。
这些记录是否有时间戳来让你知道它们最后一次被更改的时间?
如果您没有其他访问权限,那么我认为他们不会愿意配置 Oracle 的变更数据捕获功能之类的东西。如果他们愿意为您配置此功能,那么您可以对表进行初始转储,然后逐步从关联的更改表中读取更改,然后在完成后清除更改表。非常方便。CDC 的简介如下:关联..您只需要选择访问与您的 Oracle 表关联的更改表,并在将更改应用到数据库后清除更改。
我曾经使用过的产品 ($$$ 因此我不会详细介绍,但它是 Oracle Golden Gate 相关产品) 首先对源行和目标行进行校验,然后复制到不同的行。这需要一些处理能力来生成校验和,但可以大大减少通过网络传输的数据量。