gpt4 book ai didi

php - 需要从一个数据库中提取大量数据并将其插入到另一个数据库中

转载 作者:行者123 更新时间:2023-11-29 17:08:51 25 4
gpt4 key购买 nike

我试图从一个数据库中提取大量数据,重命名列,然后将其转储到另一个数据库中。我开始超时并提高了 max_execution_time 和 max_input_time。这有帮助,但我仍然没有获得所有数据。然后我添加了以下内容:

set_time_limit(0);
ignore_user_abort(1);

这使我能够提取的数据量增加了一倍,但我仍然很短,所以它仍然超时。我想知道是否有更好的方法来做到这一点。

我正在使用 Laravel 5.6,php 7.2,mysql 5.6

我正在从一个数据库中提取数据并将其插入到另一个数据库中。

$availabilities = DB::connection('mysql2')->select('select vi.status as availability_status_code,vi.date as availability_date,v.masterid as im_id from table1 vi
inner join table2 v on v.id = vi.vid where vi.date >= CURDATE() and v.masterid > 0 order by v.masterid,vi.date'); //
foreach($availabilities as $availability) {
Availabilities::create((array)$availability);
}

这有效,但如前所述超时。

有没有更有效的方法来处理这个问题,或者我应该增加不同的时间限制直到它起作用?请记住,这将通过作业每天运行一次或两次。

最佳答案

您可以使用:

DB::table('yourtable')->insert([['name' => '1st record'], ['name => '2nd record']]);

当然,您应该将其分成几部分,因此您不应该以这种方式插入例如 100 万条记录,但您应该将 100 万条记录分成例如 200 条记录的数组。这比像现在这样单独插入每条记录要快得多。

您可以使用集合chunk$availities 分成更小的部分的方法

关于php - 需要从一个数据库中提取大量数据并将其插入到另一个数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51955872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com