MySQL 匯入 CSV 教學|快速導入資料庫的方法與實例

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資料庫匯出,進一步提升資料管理能力。