猿问

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

我目前正在编写一个脚本,只需单击两次即可轻松导入备份,但我找不到有关如何导入和 .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)";



?> 


慕哥9229398
浏览 169回答 2
2回答

泛舟湖上清波郎朗

这就是我修复它的方法:$lines = gz文件($fileName);<?phpclass reader{&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; public $dbName;&nbsp; &nbsp; public $fileName;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; public function import($dbName, $fileName){&nbsp; &nbsp; &nbsp; &nbsp; $serverName = "localhost";&nbsp; &nbsp; &nbsp; &nbsp; $userName = "root";&nbsp; &nbsp; &nbsp; &nbsp; $password = "";&nbsp; &nbsp; &nbsp; &nbsp; $conn = new mysqli($serverName,$userName,$password,$dbName);&nbsp; &nbsp; &nbsp; &nbsp; $temp = "";&nbsp; &nbsp; &nbsp; &nbsp; $lines = gzfile($fileName);&nbsp; &nbsp; &nbsp; &nbsp; foreach($lines as $key => $line ){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(substr($line, 0, 2) == '--' || $line == '') continue;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $temp .= $line;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(substr(trim($line), -1, 1) == ';'){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $conn->query($temp) or print('Error performing query \'<strong>' . $temp . '\': '. '<br /><br />');&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $temp = "";}&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; echo "<script>alert('Database Imported')</script>";&nbsp; &nbsp; }}$bestand = new reader();#&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dbname&nbsp; |&nbsp; file name$bestand->import("test", "testdb.sql.gz");?>

富国沪深

如果您允许 system() 您可以:<?php system("gzip&nbsp;-dc&nbsp;<&nbsp;".$file."&nbsp;|&nbsp;mysql&nbsp;-u&nbsp;$dbuser&nbsp;-p$dbpassword&nbsp;$dbname");
随时随地看视频慕课网APP
我要回答