我有一个正在运行的 ms sql 服务器,并且希望将一些数据复制到 mysql 数据库。
我已经可以连接到它们,所以我做了类似的事情:
$pdo = new PDO('SQLSERVER', $user, $password);
$sql = "SELECT id, name FROM users";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$json_users = array();
while ($row = $stmt->fetchObject()){
$json_users[] = $row;
}
$pdo = new PDO('MYSQLDB', $user, $password);
foreach ($json_users as $key => $value){
$sql = "INSERT INTO users (id, name) VALUES (:id, :name)"
$stmt = $pdo->prepare($sql);
$stmt->bindParam('id', $value->id, PDO::PARAM_INT);
$stmt->bindParam('name', $value->name, PDO::PARAM_STR);
$stmt->execute();
}
这确实有效,但需要花费很多时间,因为它的桌子很大。
所以我的问题是我可以只用一个插入查询一次性将完整的结果从sql server插入到mysql吗?没有foreach?
Update:该表包含 173398 行和 10 列
对于准备好的语句(特别是对于多重插入),您希望拥有准备好的语句outside你的循环。您只需设置一次查询,然后在每次后续调用中提供数据
$sql = "INSERT INTO users (id, name) VALUES (:id, :name)";
$stmt = $pdo->prepare($sql);
foreach($json_users as $key => $value){
$stmt->bindParam('id', $value->id, PDO::PARAM_INT);
$stmt->bindParam('name', $value->name, PDO::PARAM_STR);
$stmt->execute();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)