为了账号安全,请及时绑定邮箱和手机立即绑定

使用 php 将 .sql.gz 文件导入 mysql

使用 php 将 .sql.gz 文件导入 mysql

PHP
慕哥9229398 2023-11-03 15:39:37
我目前正在编写一个脚本,只需单击两次即可轻松导入备份,但我找不到有关如何导入和 .gz 文件的任何信息。.sql 文件工作得很好,但如果我要解压缩它,我也可以使用 phpmyadmin 导入它。当我当前尝试导入 .gz 文件时,我只是收到一个巨大的不可读字符错误。我怎样才能导入 .gz 文件这里的重点是它是一个基于 WEB 的导入器$userName = "root";$password = "";$dbName = "test";    $conn = @new mysqli($serverName,$userName,$password,$dbName);    if ($conn->connect_errno) {    echo "Failed to connect to MySQL: " . $con->connect_errno;    echo "<br/>Error: " . $con->connect_error;}        $fileName = "189_dump.sql.gz";    $temp = "";    $lines = file($fileName);    foreach($lines as $line){        if(substr($line, 0, 2) == '--' || $line == '')        continue;        $temp .= $line;        if(substr(trim($line), -1, 1) == ';'){            $conn->query($temp) or print('Error performing query \'<strong>' . $temp . '\': '. '<br /><br />');            $temp = "";        }    }    echo "imported db (or not)";?> 
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

这就是我修复它的方法:


$lines = gz文件($fileName);


<?php


class reader{

    

    public $dbName;

    public $fileName;

    

    public function import($dbName, $fileName){

        $serverName = "localhost";

        $userName = "root";

        $password = "";


        $conn = new mysqli($serverName,$userName,$password,$dbName);


        $temp = "";

        $lines = gzfile($fileName);


        foreach($lines as $key => $line ){

            if(substr($line, 0, 2) == '--' || $line == '') continue;


            $temp .= $line;


            if(substr(trim($line), -1, 1) == ';'){

                $conn->query($temp) or print('Error performing query \'<strong>' . $temp . '\': '. '<br /><br />');

                $temp = "";}

        

        }

        echo "<script>alert('Database Imported')</script>";

    }

}

$bestand = new reader();

#               dbname  |  file name

$bestand->import("test", "testdb.sql.gz");


?>




查看完整回答
反对 回复 2023-11-03
?
富国沪深

TA贡献1790条经验 获得超9个赞

如果您允许 system() 您可以:

<?php
system("gzip -dc < ".$file." | mysql -u $dbuser -p$dbpassword $dbname");


查看完整回答
反对 回复 2023-11-03
  • 2 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信