1. 關於將CSV檔案匯入MySQL的介紹
在MySQL中匯入CSV檔案是一個能提升資料管理效率、節省手動輸入時間的強大方法。比如,當你想要一次性將多個資料來源收集的資訊導入資料庫,或需要自動處理來自外部系統的資料時,CSV匯入會非常實用。
CSV匯入的一般用途
- 大量資料處理: 與其手動輸入數千筆以上的資料,使用CSV匯入可以在短時間內完成。
- 資料移轉: 當需要將其他系統匯出的資料導入MySQL時,CSV匯入相當方便。
- 定期資料更新: 對於需要定期更新資料的系統,可以透過CSV檔案來自動化流程。
2. 前置條件
在將CSV檔案匯入MySQL之前,需要先完成一些設定與準備,這樣才能確保匯入流程順利。
2.1 必要環境
- 安裝MySQL伺服器
必須先正確安裝MySQL。請確認MySQL已能在Windows、macOS或Linux等環境中正常運作。 - 確認權限
要匯入CSV檔案,MySQL使用者必須具備適當的權限,尤其需要有LOAD DATA INFILE
的執行權限。若沒有這項權限,可能會被拒絕匯入。
2.2 CSV檔案格式
- 分隔符號
CSV檔案通常使用逗號作為分隔符號,但有時也會用到Tab或分號。請事先確認所使用的分隔符號。 - 編碼確認
若CSV檔案使用不同的字元編碼(如UTF-8、Shift-JIS),在匯入時可能會產生亂碼。請先確認編碼,必要時轉換成正確的格式。

3. 使用LOAD DATA INFILE
指令匯入CSV
在MySQL中最常見的CSV匯入方式是使用LOAD DATA INFILE
指令。這個方法能快速將大量資料導入資料庫。
3.1 基本語法
以下是將CSV檔案匯入MySQL時常用的基本語法:
LOAD DATA INFILE '/path/to/file.csv' INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n';
FIELDS TERMINATED BY
: 指定欄位的分隔符號,通常是逗號。LINES TERMINATED BY
: 指定換行符號,一般使用n
(換行)。
3.2 範例
以下範例將user_data.csv
匯入到users
資料表:
LOAD DATA INFILE '/path/to/user_data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
IGNORE 1 LINES;
IGNORE 1 LINES
: 跳過CSV檔案的第一行(標題列)。這在第一行包含欄位名稱時非常實用。
3.3 注意事項:檔案路徑與權限
指定檔案路徑時,必須確保MySQL伺服器能夠存取該檔案。如果伺服器無法存取,可以改用LOAD DATA LOCAL INFILE
從用戶端讀取資料。
4. 常見問題與解決方案
以下是CSV匯入過程中常見問題及對應解法。
4.1 檔案路徑問題
若檔案路徑錯誤,可能會出現The MySQL server is not permitted to read from the file
錯誤訊息。此時請檢查路徑是否正確,並考慮使用LOAD DATA LOCAL INFILE
讀取本地檔案。
LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n';
4.2 字元編碼問題
若檔案使用不同的字元編碼,匯入時可能發生亂碼。解決方法是先確認檔案編碼,並在MySQL端指定正確的字元集。
SET NAMES 'utf8mb4';

5. 實際範例:CSV匯入步驟
以下將示範實際將CSV檔案匯入MySQL的流程。
5.1 準備CSV檔案
先建立一個如下內容的CSV檔案(data.csv
):
id,name,age
1,山田太郎,28
2,佐藤花子,34
3,田中一郎,45
5.2 執行指令
將建立好的CSV檔案匯入users
資料表:
LOAD DATA INFILE '/path/to/data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
IGNORE 1 LINES;
此指令會將CSV檔案的第2行之後的資料匯入users
資料表。
6. 進階:錯誤處理與重複資料處理
以下介紹在匯入過程中處理錯誤與避免資料重複的方法。
6.1 處理重複資料
若同一鍵值的資料已存在,可以使用REPLACE
選項來覆蓋舊資料。
LOAD DATA INFILE '/path/to/data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
IGNORE 1 LINES
REPLACE;
6.2 錯誤處理
若匯入過程中發生錯誤,可以使用IGNORE
選項,略過有問題的資料列並繼續處理。
LOAD DATA INFILE '/path/to/data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
IGNORE 1 LINES
IGNORE;

7. 結論
在MySQL中匯入CSV檔案是一種高效處理大量資料與系統間資料移轉的方式。只要掌握基本步驟,並妥善處理錯誤與重複資料,就能建立穩定的匯入流程。
接下來我們也會介紹如何將資料從MySQL資料庫匯出,進一步提升資料管理能力。