红穆笔记
首頁 語言筆記 PHP 遠程獲取.sql.zip文件後導入數據庫
語言筆記 PHP PHP與mysql

PHP 遠程獲取.sql.zip文件後導入數據庫

PHP 远程获取.sql.zip文件后导入数据库

之前我已經發布過一篇類似的文章《PHP 獲取遠程的.sql.zip文件,然後清空數據,再將.sql.zip導入mysql數據庫》,但是這裏再補充一個函數,也是親測可用的!

🔒 隱藏內容:會員可查看

/**
 * 從遠程URL下載包含SQL文件的ZIP壓縮文件,解壓縮SQL文件到指定目錄,然後將數據導入到MySQL數據庫中。
 *
 * @param string $remoteUrl 遠程ZIP文件的URL地址
 * @param string $dbName 目標MySQL數據庫的名稱
 * @param string $dbUser 目標MySQL數據庫的用戶名
 * @param string $dbPass 目標MySQL數據庫的密碼
 * @param string $dbHost 目標MySQL數據庫的主機地址,默認爲localhost
 * @param string $sqlDir 解壓縮SQL文件的目錄路徑,默認爲當前文件所在目錄下的path/目錄
 * @throws Exception 如果下載、解壓縮、數據庫操作失敗,則會拋出異常
 */
function importSqlZip($remoteUrl, $dbName, $dbUser, $dbPass, $dbHost = 'localhost', $sqlDir = __DIR__.'/path/') {
    // 創建一個臨時文件用於保存下載的 Zip 文件
    $tempZip = tempnam(sys_get_temp_dir(), 'sql_zip_');

    // 下載遠程 Zip 文件並保存到本地
    $fp = fopen($tempZip, 'w');
    $ch = curl_init($remoteUrl);
    curl_setopt($ch, CURLOPT_FILE, $fp);
    $success = curl_exec($ch);
    curl_close($ch);
    fclose($fp);

    if (!$success) {
        throw new Exception('Failed to download the remote SQL ZIP file.');
    }
    // 創建指定目錄
    if (!mkdir($sqlDir, 0777, true)) {
        throw new Exception('Failed to create directory.');
    }

    // 解壓縮文件到指定目錄
    $zip = new ZipArchive();
    if ($zip->open($tempZip) === TRUE) {
        $zip->extractTo($sqlDir);
        $zip->close();
    } else {
        throw new Exception('Failed to extract the SQL ZIP file.');
    }

    // 清空數據庫
    $dsn = "mysql:host=$dbHost;dbname=$dbName";
    $pdo = new PDO($dsn, $dbUser, $dbPass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);
    foreach ($tables as $table) {
        $pdo->query("DROP TABLE IF EXISTS $table");
    }

    // 導入 SQL 文件
    $files = glob($sqlDir . '*.sql');
    foreach ($files as $file) {
        $pdo->exec(file_get_contents($file));
    }

    // 刪除臨時文件和 SQL 文件
    unlink($tempZip);
    $files = glob($sqlDir . '*.sql');
    foreach ($files as $file) {
        unlink($file);
    }
    rmdir($sqlDir);
}

當你想要調用這個函數時,你需要按以下格式調用:

importSqlZip($remoteUrl, $dbName, $dbUser, $dbPass, $dbHost, $sqlDir)

其中,$remoteUrl 是遠程 SQL ZIP 文件的 URL,$dbName 是要導入數據的 MySQL 數據庫名,$dbUser 是 MySQL 數據庫的用戶名,$dbPass 是 MySQL 數據庫的密碼,$dbHost 是 MySQL 數據庫的主機地址,默認爲 localhost,$sqlDir 是解壓縮後 SQL 文件的存儲路徑,默認爲當前 PHP 文件的目錄下的 "path/" 文件夾。

例如,如果你想從 "https://example.com/backup.zip" 導入數據到 "my_database" 數據庫,使用用戶名 "my_user" 和密碼 "my_password",默認的數據庫主機地址和 SQL 文件存儲路徑,則你應該這樣調用函數:

importSqlZip('https://example.com/backup.zip', 'my_database', 'my_user', 'my_password');

如果你想自定義數據庫主機地址和 SQL 文件存儲路徑,則可以這樣調用函數:

importSqlZip('https://example.com/backup.zip', 'my_database', 'my_user', 'my_password', 'my_db_host', '/custom/sql/dir/');

 

微信赞赏

微信

支付宝赞赏

支付寶

✍️ 作者: 紅穆

網站管理員 · 感謝閱讀,更多精彩內容敬請關注

作者主頁 查看主頁 →

相關文章

PHP强制转换类型

PHP強制轉換類型 語言筆記 PHP PHP採集 PHP與mysql

獲取數據類型1.如果想查看某個表達式的值和類型,用var_dump()。 2.如果只是想得到一個易讀懂的類型的表達方式用於調試,用 gettype()。3.要查看某個類型,不要用 gettype(),而用is_type() 函數。字符串轉換爲數值當一個字符串被當作數字來求值時,根據以下規則來決定結果…
👁 232
php 特殊字符转义与还原

php 特殊字符轉義與還原 語言筆記 PHP PHP採集 PHP與mysql

轉義字符是一種特殊的字符常量。轉義字符以反斜線""開頭,後跟一個或幾個字符。轉義字符具有特定的含義,不同於字符原有的意義,故稱“轉義”字符。轉義字符的用處1:將普通字符轉爲特殊用途,如後退鍵,回車鍵等。2:用來將特殊意義的字符轉換回它原來的意義。3:在數據寫入數據庫前,都會使用轉義字符(函…
👁 180
PHP mysqli

PHP mysqli 語言筆記 PHP PHP採集 PHP與mysql

執行鍼對數據庫的查詢:刪除數據庫<?php // 假定數據庫用戶名:root,密碼:123456,數據庫:RUNOOB $con=mysqli_connect("localhost","root","123456","RUN…
👁 232
PHP中mysqli

PHP中mysqli 語言筆記 PHP PHP採集 PHP與mysql

mysqli_num_rows()這個函數只用於SELECT查詢方法而mysqli_affected_rows()函數是記錄上一個sql語句對整個數據庫的影響從而把受影響的數據個數返回,這個主要用於INSERT(插入)、UPDATE(替換)、DELETE(刪除)。
👁 146

推薦閱讀

家庭监控安防系统企业网站模板 1031

家庭監控安防系統企業網站模板 1031 實用收藏 易優模板

此套eyoucms模板適用於家庭監控與安防系統企業,設計風格科技安全,能夠展示監控設備、安防系統、解決方案及工程案例。有助於安防科技企業在線上展示產品,吸引家庭與商業客戶。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優C…
👁 57
易优CMS安装常见问题总结

易優CMS安裝常見問題總結 程序筆記 易優cms

EyouCMS作爲一款基於PHP+MySQL開發的企業建站系統,在實際安裝部署過程中,由於服務器環境差異、操作流程不當等原因,常常會遇到各種各樣的問題。本文彙總了7個最常見的安裝報錯及其解決方法,供大家參考。問題一:安裝報錯“請仔細覈對數據庫賬號和密碼”報錯現象:安裝過程中提示“數據庫連接失敗,請重…
👁 73
(自适应手机版)黄色响应式车行汽车租赁网站pbootcms模板 二手车销售出租公司网站模板下载 0181

(自適應手機版)黃色響應式車行汽車租賃網站pbootcms模板 二手車銷售出租公司網站模板下載 0181 實用收藏 pbootcms模板

本套自適應手機版的黃色響應式車行與汽車租賃PbootCMS網站模板。設計風格醒目大氣,適合展示二手車、新車銷售及租車服務。有助於汽車經銷商或租賃公司在線上展示車源,吸引購車或租車客戶。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:www.4s5.c…
👁 48
php 正则匹配文章中的所有图片

php 正則匹配文章中的所有圖片 語言筆記 PHP PHP採集

可以使用 PHP 的正則表達式函數 preg_match_all() 來匹配文章中的所有圖片鏈接,正則表達式可以根據圖片鏈接的格式進行匹配。以下是一個例子:function getImagesFromContent($content) { $pattern = '/<img.*?src=[\'…
👁 409
响应式精密电子科技网站模板 1032

響應式精密電子科技網站模板 1032 實用收藏 易優模板

一款針對精密電子科技行業的eyoucms響應式網站模板。設計風格科技精密,能夠展示電子產品、技術研發、生產實力及行業應用。有助於精密電子企業在線上展示品牌,吸引行業客戶。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優CM…
👁 37
(自适应手机端)APP应用程序官网pbootcms网站模板 App软件落地页网站源码下载 0182

(自適應手機端)APP應用程序官網pbootcms網站模板 App軟件落地頁網站源碼下載 0182 實用收藏 pbootcms模板

一款自適應手機端的APP應用程序官網PbootCMS網站模板,適合軟件落地頁展示。設計風格現代科技,能夠突出APP的核心功能、界面截圖及下載引導。是APP開發運營團隊搭建高轉化率品牌官網與應用下載頁的理想選擇。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解…
👁 64