Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 快速更新大表查询_Php_Mysql_Mysqli_Php 7 - Fatal编程技术网

Php 快速更新大表查询

Php 快速更新大表查询,php,mysql,mysqli,php-7,Php,Mysql,Mysqli,Php 7,我有一个相当大的数据库,它是使用csv“加载数据填充”方法导入的。 但有些单元格需要进行操作,不幸的是,在导入过程中我无法进行操作。我必须在以后再做,因为PHP更容易使用,更不用说还有其他需要更改的表单元格,这是mysql命令无法做到的。 “电话”单元就是此类操作的一个例子。我必须中断电话号码,然后分别更新同一行的两个不同单元格。 例如: $myQ = my_db_query("SELECT companyId, Telephone FROM companies WHERE 1"); while

我有一个相当大的数据库,它是使用csv“加载数据填充”方法导入的。 但有些单元格需要进行操作,不幸的是,在导入过程中我无法进行操作。我必须在以后再做,因为PHP更容易使用,更不用说还有其他需要更改的表单元格,这是mysql命令无法做到的。 “电话”单元就是此类操作的一个例子。我必须中断电话号码,然后分别更新同一行的两个不同单元格。 例如:

$myQ = my_db_query("SELECT companyId, Telephone FROM companies WHERE 1");
while ($row = my_db_fetch_array($myQ))
{
    if($row["Telephone"] != ""){
        $Telefon_area = "";
        $Telefon_num = "";
        $pieces = explode(" ", $row["Telephone"]);
        $Telefon_area = trim( $pieces[0] );
        $Telefon_num  = trim( $pieces[1] );
        my_db_query("UPDATE companies SET `Telefon_area` = '$Telefon_area', `Telefon_num` = '$Telefon_num' WHERE `companyId` = ".$row["companyId"]);
    }
}
这种方法面临的问题是(尽管我已经为电话列编制了索引),但速度非常慢,因为我正在更新1.5mil条目


有更快的方法吗?

您可以编写SQL插入脚本,而不是更新每一行,然后截断表并通过插入脚本插入所有新值。Insert比update快。嗯,这是个好主意,但我现在使用的导入器将来可以用来用新数据进一步更新表。我在示例中所做的选择可以是在值之间进行选择,因此通过更新,我可以只更新需要的行,而保留其他行不变。这就是为什么我不想删除列并导入新列的原因。。但是好主意!您可以编写一个SQL插入脚本,而不是更新每一行,然后截断表并通过插入脚本插入所有新值。Insert比update快。嗯,这是个好主意,但我现在使用的导入器将来可以用来用新数据进一步更新表。我在示例中所做的选择可以是在值之间进行选择,因此通过更新,我可以只更新需要的行,而保留其他行不变。这就是为什么我不想删除列并导入新列的原因。。但是好主意!