我有一个包含10.000条记录的列表,我希望将其插入到MySQL数据库中。
我尝试使用foreach和简单的INSERT INTO插入它们,但是插入需要花费很多时间。
是否有任何方法可以更快地插入这些行?
$contents = file_get_contents("table.txt.001");
$pollfields = explode(',', $contents);
foreach ($pollfields as $key) {
$query = "INSERT INTO `table` (`id`, `name`) VALUES (NULL, '$key')";
mysqli_query($conn, $query) or trigger_error(mysqli_error()." in ".$query);
}
我已经阅读了关于更多这样的值的讨论
"INSERT INTO `table` (`id`, `name`) VALUES (NULL, '$key'),(NULL, '$key'),(NULL, '$key')";
问题是他如何知道每次插入下一个5,例如,如果使用foreach。
答案 0 :(得分:0)
创建与主表相同的临时表
然后在tempory表中插入所有条目。
$contents = file_get_contents("table.txt.001");
$pollfields = explode(',', $contents);
$sql = "";
foreach ($pollfields as $key) {
$sql .= " (NULL , ".$key.") , ";
}
$sql = trim($sql,',');
$query = "INSERT INTO `temp_table` (`id`, `name`) VALUES " . $sql ;
mysqli_query($conn, $query) or trigger_error(mysqli_error()." in ".$query);
然后将整个数据复制到主表中,
INSERT INTO `table` (`id`, `name`)
SELECT `id` , `name` FROM `temp_table`
现在你需要TRUNCATE temp_table。
如果要插入数百万条记录,ABove Process会更快。
答案 1 :(得分:-1)
我必须用15,000条电子商务产品记录更新MySQL数据库一次。
我使用CSV文件将数据导入数据库。你考虑过这个吗?
<强> - 编辑 - 强>
@GrumpyCrouton ok这是一个解决方案。
我发现this link提供了如何获取这10,000条记录并使用Excel电子表格将它们导入数据库的解决方案。