在網站維運的過程中,資料庫的備份與還原是家常便飯。但當資料庫成長到一定規模時,單純的匯出匯入就可能變成一場惡夢。這次,我們將分享一個處理大型 MySQL 資料庫(超過 1GB)的實戰經驗,特別是在有資源限制的虛擬主機環境(如 GoDaddy)中,如何巧妙地完成匯入工作。
前言:我們遇到的挑戰
檔案過大:完整的 SQL 匯出檔超過 1GB。 phpMyAdmin 限制:直接使用 phpMyAdmin 的匯入功能,會因為檔案過大及執行時間過長而導致連線逾時(Timeout),無法成功匯入。 MySQL Workbench 速度緩慢:嘗試使用官方的 MySQL Workbench 工具進行資料匯入,雖然可行,但速度非常慢,且進度回饋不明顯,難以掌握狀況。
核心概念:化整為零
所需工具
EmEditor:處理大型文字檔的神器。一般的文字編輯器(如 EditPlus、Notepad++)在開啟 GB 等級的檔案時可能會崩潰或沒有回應,而 EmEditor 能輕鬆應對。 phpMyAdmin:虛擬主機最常見的網頁版資料庫管理工具,用來匯入分割後的小檔案。 MySQL Workbench(選用):一個功能強大的本地端資料庫管理工具,在本次任務中,主要用來「監控」匯入進度。
操作步驟教學
步驟一:使用 EmEditor 開啟並篩選資料
用 EmEditor 開啟你巨大的 .sql 檔案。 使用 EmEditor 的篩選(或搜尋)功能,輸入 INSERT INTOStockVALUES。這會將檔案中所有與 Stock 資料表相關的插入語法全部顯示出來。 將篩選出的所有內容(Ctrl+A 全選)複製,並貼到一個新的 EmEditor 檔案中,將其另存為 stock_all.sql。這樣我們就有了一個只包含股票資料的 SQL 檔。
步驟二:依年份分割成小檔案
在 stock_all.sql 檔案中,再次使用篩選功能。 例如,我想分離出 2017 年的資料,就在篩選框中輸入 2017-。 EmEditor 會即時篩選出所有包含 "2017-" 的資料行。 將篩選出的結果全選、複製,然後貼到一個新的檔案,並命名為 stock_2017.sql。 重複此步驟,建立出 stock_2018.sql、stock_2019.sql 等檔案。
步驟三:透過 phpMyAdmin 匯入分割後的檔案
登入你的 phpMyAdmin。 選擇目標資料庫,並點進 Stock 資料表。 點擊頂端的 「匯入 (Import)」 頁籤。 點擊「選擇檔案」,選擇你剛剛分割好的其中一個檔案,例如 stock_2019.sql。 確認設定無誤後,點擊右下角的 「執行 (Go)」。
步驟四(進階技巧):使用 MySQL Workbench 監控進度
在 phpMyAdmin 開始匯入的同時,開啟 MySQL Workbench 並連線到同一個資料庫。 在查詢視窗中,執行以下 SQL 語法來查看最新的資料: 你可以每隔幾秒鐘就重新執行一次查詢。你會發現資料筆數不斷增加,日期也不斷更新,這代表 phpMyAdmin 正在背景順利地匯入資料。透過這個方法,即使網頁沒有回饋,我們也能安心地掌握進度。