首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

phpMyAdmin 導入大型資料庫解決方案(下):離線腳本繞過 PHP 限制,秒級完成百 MB 數據匯入

     編輯:關於SqlServer

痛點:phpMyAdmin 匯入大數據 SQL 超時/記憶體溢位

結構已匯入,但 db_data.sql 過大(> 50MB),phpMyAdmin 無法完成。

解決方案:獨立 PHP 匯入腳本

1. 取得腳本

下載 import.php(文末附連結或自行建立),解壓至網站根目錄。

2. 修改配置


3. 準備數據檔

  1. 解壓 db_data.sql.gz → db_data.sql
  2. 上傳至網站根目錄(與 import.php 同層)

4. 執行匯入

瀏覽器訪問:https://yourdomain.com/import.php

正確配置下,百 MB 數據檔可在數秒至數十秒完成匯入,繞過 PHP 上傳/執行時間/記憶體限制。

腳本核心邏輯(參考實作)


connect_errno) die("Connect failed: " . $mysqli->connect_error);

$sql = file_get_contents($sql_file);
$queries = array_filter(array_map('trim', explode(";\n", $sql)));

foreach ($queries as $query) {
    if (empty($query)) continue;
    if (!$mysqli->query($query)) {
        error_log("Query failed: " . $mysqli->error . " | SQL: " . substr($query, 0, 200));
    }
}
echo "Import completed.";
$mysqli->close();

進階優化建議

  • 分批執行:大檔案 file_get_contents 可能 OOM,改用 fopen + fgets 逐行讀取並批次執行
  • 多語句支援:mysqli::multi_query 可一次發送多條語句,減少網路往返
  • 進度顯示:AJAX 輪詢或 WebSocket 回報已執行行數/百分比
  • 安全性:匯入完成後立即刪除 import.php 和 db_data.sql,或放在受保護目錄
  • 替代方案:SSH 存取時直接 mysql -u user -p db < db_data.sql 最快最穩

完整遷移清單

  1. 來源端:結構/數據分離匯出 (gz 壓縮)
  2. 目標端:先匯入結構 (phpMyAdmin)
  3. 目標端:數據檔上傳 + import.php 離線執行
  4. 驗證:抽樣查詢、CHECKSUM TABLE、應用功能測試
  5. 清理:刪除匯入腳本與 SQL 檔案
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved