使用 PHP/MySQL 匯入 CSV 資料:故障排除和最佳化
本文解決了與使用 PHP/MySQL 將 CSV 資料匯入 MySQL相關的故障排除與最佳化問題PHP.
問題與解決方案:
1.文字顯示為0:
1.文字顯示為0:
確保您的CSV 檔案使用fgetcsv 中指定的正確分隔符號。檢查資料庫中「文字」列的資料類型。如果沒有設定為文字類型,匯入的資料可能會被截斷。
2.用引號括起來的資料:
如果 CSV 檔案中的資料用引號括起來,您可以使用 returned_by 參數在 fgetcsv 中指定。這將從導入的資料中去除引號。
3.忽略標題行:
要忽略標題行,請在開始匯入資料之前使用 fgets 函數讀取並丟棄 CSV 檔案的前 X 行。
4.資料格式保留:
MySQL 預設保留資料格式。小數值導入資料庫後將保留為小數。
5.執行時間限制:
如果遇到「超出最大執行時間」錯誤,請嘗試增加 PHP 配置 (php.ini) 中的 max_execution_time 設定。或者,將導入過程分解為較小的批次,以減少伺服器上的負載。
最佳化:
使用LOAD DATA INFILE 功能:
MySQL 提供了LOADATA INFILE 功能,該功能允許您將CSV 檔案直接匯入資料庫,而無需循環或解析。此方法比使用 PHP 迴圈要快得多。
<?php $query = <<<EOF LOAD DATA INFILE '$fileName' INTO TABLE tableName FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' (field1,field2,field3,etc) EOF; $db->query($query); ?>使用 LOAD DATA INFILE 的範例:透過使用 LOAD DATA INFILE,您可以簡化 CSV 匯入過程,提高效能,減少資源消耗。
以上是如何使用 PHP 有效率地將 CSV 資料匯入 MySQL 並排除故障?的詳細內容。更多資訊請關注PHP中文網其他相關文章!