【发布时间】:2019-09-13 02:49:15
【问题描述】:
我正在寻找 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);
【问题讨论】:
-
奇怪,谁给你这样的条件?
-
一次做一千个。您还需要考虑 MySQL
max_allowed_packet设置。 -
能否将数据写入文件,然后使用
LOAD DATA INFILE? -
您需要将数据分块成更小的请求并进行处理。这在处理大量数据时实际上很常见。 @Barmar 如果允许,我同意这绝对是最好的解决方案。
-
可以用PDO代替mysqli吗?使用数千个
?创建 PDO 准备语句并将所有值放入数组中更容易。