此問題解決了使用 PHP 將 CSV 資料匯入 MySQL 資料庫時遇到的幾個挑戰。
提供的程式碼有效上傳 CSV 檔案並顯示其內容。然而,它面臨著文字資料在資料庫中顯示為 0 以及可能用引號括住導入資料的問題。
1.文字欄位顯示為 0
要解決此問題,請檢查 CSV 檔案的編碼。確保它是 UTF-8,它支援文字和數字資料。此外,請驗證您的資料庫表列是否已正確定義以接受文字資料。
2.引用資料
引號可以將資料包含在 CSV 檔案中。如果遇到此問題,可以在將資料插入資料庫之前使用 mysql_real_escape_string 來清理資料。此函數會對特殊字元(包括引號)進行轉義,以防止 SQL 注入攻擊。
3.忽略標題行
要跳過CSV 檔案的前X 行(其中可能包含標題),請在開始匯入過程之前使用fseek 和fgetc 手動瀏覽文件。
4.資料格式
資料格式在整個導入過程中應保持不變。數值(包括小數)將以其原始格式保留。然而,需要注意的是,MySQL 具有針對各種格式的特定資料類型(例如小數、浮點等),因此相應地定義資料庫列至關重要。
5.效能問題
報出「Fatal error」表示超出了PHP的執行時間限制(30秒)。匯入大型資料集時經常會遇到這種情況。若要解決此問題,您可以增加 PHP 設定檔 (php.ini) 中的 max_execution_time 設定,或實作分割導入機制,以透過多個請求處理較小部分的資料。
替代方法
根據答案中的建議,您可以考慮使用 MySQL 的 LOAD DATA INFILE 功能。這使您可以使用單一 SQL 查詢直接匯入 CSV 數據,從而提高效能並消除 PHP 處理循環的需要。
以上是如何解決 PHP/MySQL 中的 CSV 資料導入問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!