首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

將文字檔資料匯入 MySQL 表:PHP 腳本實作與 LOAD DATA 高效替代方案

     編輯:MySQL 資料庫相關知識

資料格式準備

文字檔每行一筆,欄位以逗號分隔:

aaa,bbb,ccc,ddd,eee
fff,ggg,hhh,iii,jjj,kkk

儲存為 yourdate.txt。

PHP 逐行匯入腳本(教學用、小量資料)

<?php
$hostname = "localhost";
$username = "yourname";
$password = "yourpwd";
$dbname   = "yourdb";

$conn = mysql_connect($hostname, $username, $password);
mysql_select_db($dbname, $conn);

$lines = file("yourdate.txt");
foreach ($lines as $line) {
    $fields = explode(",", trim($line));
    $sql = sprintf(
        "INSERT INTO `ip` VALUES ('%s','%s','%s','%s','%s')",
        mysql_real_escape_string($fields[0]),
        mysql_real_escape_string($fields[1]),
        mysql_real_escape_string($fields[2]),
        mysql_real_escape_string($fields[3]),
        mysql_real_escape_string($fields[4])
    );
    mysql_query($sql, $conn);
}
mysql_close($conn);
echo "ok!";
?>

缺點:逐行 INSERT、PHP 迴圈開銷大、無交易控制、易超時。僅適合萬筆以內。

生產環境推薦:LOAD DATA INFILE(極速、原生)

LOAD DATA INFILE '/path/yourdate.txt'
INTO TABLE `ip`
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;  -- 若有標題行
  • 直接由 MySQL 伺服器讀取檔案,繞過網路協定與應用層
  • 支援平行執行緒(MySQL 8.0+)、交易控制、錯誤行跳過
  • 百萬行級別秒級完成

安全與權限注意

  • FILE 權限僅授信任帳號
  • 檔案需置於 secure_file_priv 目錄下(MySQL 5.6+ 預設限制)
  • 生產環境建議搭配 mysqlimport 指令工具(LOAD DATA 的命令列封裝)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved