公司內部大量 Excel 資料需遷移至 MySQL,無現成匯入工具,利用 PHP 搭配文字檔中介,快速完成轉換。
a.txt、b.txt、c.txt、d.txt。file() 逐行讀取四個文字檔,同索引位置對應同一筆記錄,迴圈寫入資料庫。<?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 筆記錄。";
.xlsx/.xls,免去手動拆檔步驟。execute(),或用 LOAD DATA LOCAL INFILE 極速匯入。適合一次性、資料量較小(< 10 萬筆)、欄位固定的遷移任務。長期同步建議建立 ETL 流程或使用資料庫原生匯入工具。