在数据库快速php中插入数据?

时间:2017-07-28 13:23:41

标签: php mysql

我有一个包含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。

2 个答案:

答案 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电子表格将它们导入数据库的解决方案。