通过php进行数据库迁移

5 php mysql sql database relational-database

我有一个 mysql 数据库,我正在尝试将其迁移到另一个数据库中。它们有不同的模式,我为旧数据库的每个表编写了一个 php 脚本,以便将其数据填充到新数据库中。该脚本工作得很好,但问题是它没有移动所有数据。例如,如果我有一个表,并且它的所有信息都被选择,然后插入到新表中,但只完成了一半。我这样做的方式是打开一个数据库,选择 * 并将其放入关联数组中。然后我关闭数据库连接并连接到另一个数据库连接,遍历数组的每个元素并将它们插入到新的元素中。数组的大小有限制吗?这里出了什么问题?

bla*_*ade 4

您应该分块(例如 1000 行)从第一个数据库读取行,将这些行写入第二个数据库,清理数组(使用 unset() 或空数组)并重复该过程,直到读取所有行。这克服了内存限制。

另一个问题可能是脚本运行时间太长(如果表太大),因此请尝试使用函数set_time_limit()。此函数重置脚本的超时,超过该超时后脚本应被终止。我建议在处理每个块后调用它。