CREATE TABLE ipaddress (
area_h VARCHAR(50),
area_f VARCHAR(50),
address VARCHAR(255)
);
<?php
$file = 'ipadress.txt';
if (!is_readable($file)) die('檔案不存在或不可讀');
$lines = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$total = count($lines);
echo "共 $total 筆記錄,開始匯入...<br>";
$mysqli = new mysqli('localhost', 'root', '', 'cht');
if ($mysqli->connect_errno) die('連線失敗: ' . $mysqli->connect_error);
$mysqli->set_charset('utf8');
$stmt = $mysqli->prepare('INSERT INTO ipaddress (area_h, area_f, address) VALUES (?, ?, ?)');
if (!$stmt) die('Prepare 失敗: ' . $mysqli->error);
$success = 0;
foreach ($lines as $i => $line) {
$fields = explode(',', $line);
if (count($fields) !== 3) {
echo "第 " . ($i+1) . " 行欄位數異常,跳過:$line<br>";
continue;
}
// 去除包裹引號與首尾空白
$fields = array_map(function($v) { return trim($v, '" \t'); }, $fields);
$stmt->bind_param('sss', $fields[0], $fields[1], $fields[2]);
if ($stmt->execute()) {
$success++;
} else {
echo "第 " . ($i+1) . " 行寫入失敗: " . $stmt->error . "<br>";
}
// 每 100 筆輸出進度
if (($i+1) % 100 === 0) echo "已處理 " . ($i+1) . " 筆...<br>";
}
$stmt->close();
$mysqli->close();
echo "<br>匯入完成:成功 $success / $total 筆。";
?>
// 直接用 LOAD DATA INFILE(最快)
$sql = "LOAD DATA INFILE 'ipadress.txt'
INTO TABLE ipaddress
FIELDS TERMINATED BY ',' ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
(area_h, area_f, address)";
$mysqli->query($sql);
需確保 MySQL `secure_file_priv` 允許讀取該路徑,或將檔案放入指定目錄。