gpt4 book ai didi

php - 如何使用 php 脚本将百万行插入 MySQL 数据库?

转载 作者:行者123 更新时间:2023-11-29 07:22:01 26 4
gpt4 key购买 nike

我正在寻找 php 脚本来生成随机数据并将 100 万行插入 mysql 数据库。

这是我在作业中收到的测试用例。

这是我试过的一段代码,但它没有工作,因为允许的内存大小已用尽。

附言不能更改 memory_limit,因为它被禁止并算作作弊:)

$query = "INSERT INTO book(firstname, lastname, phone_number, address) VALUES ";
$query_parts = array();
for($i=0; $i<1000000; $i++){
$firstname = 'name' . $i;
$lastname = 'lastname' . $i;
$phone_number = mt_rand();
$address = 'address' . mt_rand();
$query_parts[] = "('" . $firstname . "', '" . $lastname . "', '" . $phone_number . "', '" . $address . "')";
}
$query .= implode(',', $query_parts);

$create_record_query = mysqli_query($connection, $query);

最佳答案

分批进行,例如一次 1000 行。

使用 PDO 而不是 mysqli,因为它允许您使用数组执行准备好的语句以提供值。

$batch_size = 1000;

$sql = "INSERT INTO book(firstname, lastname, phone_number, address) VALUES ";
// Add 1,000 value lists
$sql .= str_repeat("(?,?,?,?),", $batch_size-1);
$sql .= "(?,?,?,?)";
$stmt = $pdo->prepare($sql);
for ($i = 0; $i < (1000000/$batch_size); $i++) {
$vals = array();
for ($j = 0; $j < $batch_size; $j++) {
array_push($vals, "name$j", "address$j", mt_rand(), "address" . mt_rand());
}
$stmt->execute($vals);
}

您可能需要增加 MySQL 服务器的 max_allowed_pa​​cket 设置以处理 1000 行,或减小批大小。确保 $batch_size 平均分为 100 万——上面的代码不会处理大小不同的最后一批(考虑将其修复为读者的练习)。

关于php - 如何使用 php 脚本将百万行插入 MySQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55819323/

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