首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

20 行程式碼:Excel 資料匯入 MySQL 實戰技巧

     編輯:PHP 綜合知識

場景

公司內部大量 Excel 資料需遷移至 MySQL,無現成匯入工具,利用 PHP 搭配文字檔中介,快速完成轉換。

操作流程

  1. Excel 拆欄另存:將各欄位分別複製到新活頁簿,另存為「文字檔 (Tab 分隔)」,產生 a.txt、b.txt、c.txt、d.txt。
  2. 建立 MySQL 資料表:對應欄位型態與長度,避免資料截斷。
  3. PHP 匯入腳本:以 file() 逐行讀取四個文字檔,同索引位置對應同一筆記錄,迴圈寫入資料庫。

核心程式碼(txt2mysql.php)

<?php
$inc  = file('a.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$adds = file('b.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$pri  = file('c.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$tel  = file('d.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

$pdo = new PDO("mysql:host=localhost;dbname=dbname;charset=utf8mb4", "user", "pass", [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);

$stmt = $pdo->prepare("INSERT INTO tbname (inc, adds, pri, tel) VALUES (?, ?, ?, ?)");
$count = 0;
$rows  = max(count($inc), count($adds), count($pri), count($tel));

for ($i = 0; $i < $rows; $i++) {
    $stmt->execute([
        $inc[$i]  ?? '',
        $adds[$i] ?? '',
        $pri[$i]  ?? '',
        $tel[$i]  ?? '',
    ]);
    $count++;
}

echo "成功匯入 $count 筆記錄。";

進階改良建議

  • 直接讀 Excel:使用 PhpSpreadsheet 直接讀取 .xlsx/.xls,免去手動拆檔步驟。
  • 批次寫入:累積 500-1000 筆再 execute(),或用 LOAD DATA LOCAL INFILE 極速匯入。
  • 資料清洗:匯入前去除 BOM、統一換行符、處理欄位引號逸出。
  • 錯誤紀錄:失敗行寫入 log 檔,方便事後補齊。

適用範圍

適合一次性、資料量較小(< 10 萬筆)、欄位固定的遷移任務。長期同步建議建立 ETL 流程或使用資料庫原生匯入工具。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved