php - 在远程数据库中插入 134675 个值的最快方法

标签 php mysql insert

我有一个包含超过 134675 个值的数组,我需要将它们插入到我的 mySQL 表中。我知道使用 PHP 和 mySQL 数据插入所需的所有东西。有没有一种快速方法可以让我在 30-60 秒内将所有这些值插入远程服务器?因为当我尝试使用 foreach 方法时,页面超时。远程服务器不允许数据库连接持续超过 60 秒。我不知道为什么。所以请帮我快速逻辑。

这是我试过的一些代码:

foreach($array as $value)
{
    $sql="insert into collected values('".$value."')";
    $res=mysql_query($sql);
    //then some extra code.
}

注意 我在服务器上没有那么多访问权限。我的数据库帐户只能插入值,仅此而已。它是对 mySQL 数据库的约束。我不能使用 CSV 或任何其他东西。

最佳答案

您可以在循环中包含 mysql_ping()功能。此函数检查以确保连接已打开,如果未打开,则重新连接。

使用您自己的示例,您可以执行以下操作:

foreach($array as $value) {
    mysql_ping($dbconn);
    $sql="insert into collected values('".$value."')";
    $res=mysql_query($sql);
    //then some extra code.
}

编辑:需要注意的是,根据文档,在 MySQL 5.0.14 之后,PHP 不会自动重新连接。如果你使用更新版本的 MySQL,你将不得不加入你自己的连接逻辑,可能像这样(我还没有测试过):

function check_dbconn($connection) {
    if (!mysql_ping($connection)) {
        mysql_close($connection);
        $connection = mysql_connect('server', 'username', 'password');
        mysql_select_db('db',$connection);
    } 
    return $connection;
}

foreach($array as $value) {
    $dbconn = check_dbconn($dbconn);
    $sql="insert into collected values('".$value."')";
    $res=mysql_query($sql, $dbconn);
    //then some extra code.
}

关于php - 在远程数据库中插入 134675 个值的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6231285/

相关文章:

mysql - Grails - MySQL 查询结果错误 : Bad format for Time

php - 这个简单的查询有问题。有人能看到吗?

mysql创建过程脚本

php - cron 中的时区问题

php - 如何让用户在FCK编辑器中添加对象标签?

php - 通过复选框选择通过 PHP 将 MySQL 表导出到 CSV

php - MySQL在预先编写的脚本中插入语法错误

php - 修剪空格的 PHP fgetcsv 错误的任何解决方法?

php - 如何使用 Jetstream 在 Laravel 8 中添加新的 Livewire 组件时解决 RootTagMissingFromViewException 错误

mysql - 如何在 "\detail1\detail2\"上应用 SQL(转义 '\')?