【发布时间】:2015-05-29 11:23:39
【问题描述】:
我正在使用:
- 本地 Postgres 数据库
- 具有本地 MySQL 数据库的 Laravel 5
- Postgres DB 包含来自 OTRS 的表结构 - 表“tickets”上有超过 91.000 行
我需要将数据从一个数据库移动到另一个数据库。我所做的是编译一个大查询,它结合了我需要的所有数据,并在我在 Laravel 结构中创建的 PHP 脚本中运行它。然后我使用 Eloquent 遍历结果以插入 MySQL。我知道这很糟糕,但我必须删除 PHP 的内存和时间限制才能做到这一点,虽然花了很长时间,但它奏效了!
现在我意识到我错过了一些东西,我需要重新运行一个类似的查询(结果相同的行数),但这次只是在 MySQL 数据库中添加一个字段。
我的问题是,如何优化这个过程?我正在考虑使用块,但我不知道该怎么做。
澄清一下:
- MySql 的 Tickets 表包含 91397 行 5 列
- Postgres Tickets 表也有 91397 行和 6 列
- 我在 Laravel (MySQL) 上创建了一个迁移,添加了额外的列(虽然它是空的)
如果我向您展示我拥有的代码,可能会更容易。
【问题讨论】:
-
你想使用 Laravel 向现有架构添加列吗?
-
@AliGajani 我会更新帖子以澄清。
-
既然这些都在你的机器上,是一次性的吗?或者您是否正在开发一个使用 Eloquent 移动数据的可重复流程?
-
@Stradas 实际上都是。远程服务器中有一个生产数据库。意识到这一点后,我调整了我的代码,因此我不会获取所有 90k 行,而只会获取最后 100 行。每当我部署它时,它都会从它的最后一个已知 id 同步并与远程生产服务器“赶上速度”。
标签: php mysql database postgresql laravel-5