PHP / MySQL数据迁移

时间:2018-12-04 12:01:58

标签: php mysql

我正试图从一个MySQL数据库中获取5100行到另一个数据库。但是,该脚本似乎只能在1300左右获取并结束。

该脚本有两个连接,每个数据库一个。代码如下:

$result = mysqli_query($con_remote,"SELECT * FROM product_images");

while($row = $result->fetch_assoc())
{
    //Insert
    mysqli_query($con_local,"INSERT INTO product_images (id, filename, 
product_id) VALUES('$row[product_image_id]', '$row[product_image_filename]', 
'$row[fk_product_id]')");
}

为了避免执行超时,我还在脚本开始处添加了ini_set('max_execution_time', 800);。我该如何改进/更改才能获得全部5100行?

编辑:我最终导出了远程数据库,并将其导入到本地计算机,然后更改列名。

3 个答案:

答案 0 :(得分:1)

请尝试以下操作。请参阅随附的代码。 这很简单,无需检索while或for循环

ini_set('max_execution_time', 1200);
// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
mysqli_select_db($conn, 'db1');

// Create connection for second db
$conn2 = new mysqli($servername, $username, $password);

// Check connection
if ($conn2->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully for Second";
mysqli_select_db($conn2, 'db2');
echo '<br>';

$sql = 'INSERT INTO db1.table1 (ID, NAME) 
SELECT ID, NAME FROM db2.table1';

if (mysqli_query($conn2, $sql)) {
      echo "New record created successfully";
} else {
      echo "Error: " . $sql . "<br>" . mysqli_error($conn2);
}
mysqli_close($conn2);
mysqli_close($conn);

答案 1 :(得分:0)

在您的代码上方插入此php函数:

ini_set('max_execution_time', 1200);
set_time_limit(int $seconds);

答案 2 :(得分:0)

您可以将脚本执行时间设置为零,这意味着脚本可以永远运行。在脚本的开头添加以下内容:

ini_set('max_execution_time', 0);