gpt4 book ai didi

php - MySQL 和 INSERT 忽略

转载 作者:行者123 更新时间:2023-12-01 00:24:08 24 4
gpt4 key购买 nike

我正在尝试从 MySQL 中的数据库中读取数据并将我的数据插入到 MySQL 中的另一个数据库中。

我的第一张 table 是这样的

CREATE TABLE IF NOT EXISTS `link` (
`_id` bigint(20) NOT NULL AUTO_INCREMENT,
`country` varchar(30) COLLATE utf8 DEFAULT NULL,
`time` varchar(20) COLLATE utf8 DEFAULT NULL,
`link` varchar(100) COLLATE utf8 DEFAULT NULL,
PRIMARY KEY (`_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6149 ;

第二个表是

CREATE TABLE IF NOT EXISTS `country` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(15) CHARACTER SET utf8 NOT NULL,
`Logo` varchar(50) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Name_3` (`Name`),
UNIQUE KEY `ID` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8457 ;

第一个表中有大约 6114 行,我正尝试使用此代码插入到第二个表中

<?php

$tmp = mysqli_connect(******, *****, ****, *****); // First table in here

if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$main = mysqli_connect(*****, *****, ****, ******); //Second table in here

if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$req = "SELECT country FROM link";
$result = mysqli_query($tmp, $req) or die( mysqli_error($tmp) );

echo "-> ".mysqli_num_rows($result)."<br>";

while ($row = mysqli_fetch_array($result)) {
$con = $row["country"];

$req = "INSERT IGNORE INTO country (Name) VALUES ('$con')";
mysqli_query($main, $req) or die( mysqli_error($main) ) ;

}
?>

问题是 php 代码可以工作,但是 6114 需要很长时间,我负担不起。是什么导致代码需要这么长时间才能工作?是“插入忽略”吗?有什么办法可以更快地做到这一点?

最佳答案

由于数据库在同一台服务器上,您可以简单地使用 INSERT ... SELECT (这避免了必须将数据带入 PHP 并循环执行为每个数据执行单独的数据库命令的结果,因此将显着更快):

INSERT INTO db2.country (Name) SELECT country FROM db1.link

关于php - MySQL 和 INSERT 忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17743758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com