如何將 CSV 檔案匯入 MySQL 資料庫中的表中

Gustavo du Mortier 2023年1月30日
  1. LOAD DATA INFILE SQL 將 CSV 匯入到 MySQL 中
  2. 使用 HeidiSQL 向 MySQL 匯入 CSV 檔案
如何將 CSV 檔案匯入 MySQL 資料庫中的表中

本教程文章將介紹兩種從逗號分隔值(CSV)檔案中匯入資料到 MySQL 資料庫並插入到表中的方法。

我們將介紹將 CSV 檔案匯入 MySQL 的不同方法。這個任務可以通過執行一系列 SQL 命令,以程式設計的方式完成;也可以通過互動式的方式,使用圖形化 MySQL 客戶端的檔案匯入對話方塊,如 HeidiSQL。

LOAD DATA INFILE SQL 將 CSV 匯入到 MySQL 中

我們先來看看如何使用 LOAD DATA INFILE SQL 語句來程式化地匯入 CSV 檔案。

在匯入檔案之前,需要先建立包含匯入資料的表。假設你的 CSV 檔案包含圖書資訊,分為 ISBN、Title、Author 和 ListPrice 欄位。要建立這樣一個表,你需要執行這樣的命令。

CREATE TABLE BooksCSV (
    ISBN VARCHAR(255) NULL,
    title VARCHAR(255) NULL,
    author VARCHAR(255) NULL,
    ListPrice VARCHAR(255) NULL
);

建議所有的欄位都接納 NULL 值,並且表沒有主鍵,因為事先並不知道 CSV 檔案中的資料是否完整和規範。

另一個建議是,即使是數字資料,也只使用 VARCHAR 欄位,以防止檔案中的資料格式不正確而導致處理錯誤。匯入資料後,可以直接在資料庫中進行清理,讀取表的數,並進行必要的驗證和修正。

有了資料的目標表後,需要確定 CSV 檔案的路徑。假設該檔案的完整路徑是 C:\csvdata\books.csv。那麼,要將該檔案匯入到你的表中,你應該執行命令。

LOAD DATA
INFILE 'c:/csvdata/books.csv'
INTO TABLE BooksCSV ` 

LOAD DATA INFILE 語句要求你指定原始檔和目標表。也可以選擇指定其他引數,如欄位分隔符、文字限定符和是否存在標題行。

在下面的例子中,新增的引數指定欄位用逗號分隔,字串用雙引號括起來,第一行必須被忽略,因為它包含列標題。

LOAD DATA
INFILE 'c:/csvdata/books.csv'
INTO TABLE BooksCSV 
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
IGNORE 1 ROWS;

現在,你知道如何在 MySQL 中以程式設計方式匯入 CSV 檔案了。

使用 HeidiSQL 向 MySQL 匯入 CSV 檔案

我們來看看如何使用圖形化的 MySQL 客戶端(如 HeidiSQL)進行互動式操作。

步驟和我們上面看到的一樣。

  • 建立表
  • 將檔案的內容匯入其中。

使用 HeidiSQL 建立表時,需要將客戶端連線到 MySQL 伺服器,選擇要匯入資料的資料庫。然後點選資料庫上的右鍵,選擇建立新的-表選項。

mysql 匯入 csv 截圖 1

你必須在相應的欄位中輸入表的名稱並新增列。要新增一個列,點選+ 按鈕,並輸入其名稱和資料型別。

在本例中,表的名稱為 BooksCSV,欄位與我們在前面的例子中使用的相同。

完成新增列後,單擊儲存在資料庫中建立表。

建立完表後,就可以從 CSV 檔案中匯入資料了。但是在啟動匯入過程之前,你需要通過改變客戶端和伺服器元件的啟動引數,啟用在客戶端和伺服器元件上載入本地資料。在啟用載入本地資料時,你必須考慮到一些安全因素。要了解更多關於它們的資訊,請閱讀 MySQL 官方文件中的本文

當你準備好匯入 CSV 檔案時,進入 HeidiSQL 的工具選單,選擇匯入 CSV 檔案選項。你必須指定要匯入的 CSV 檔案路徑,並選擇要插入匯入資料的資料庫和表。如果表中的欄位和檔案上的欄位一樣多,可以取消選中表欄位。最後,點選 匯入!,這個過程就會開始。

mysql 匯入 csv 截圖 2

為了執行匯入,圖形介面會發出與我們之前描述的程式化選項相同的 LOAD DATA 命令,所以最終的結果幾乎是一樣的-資料庫表將被從 CSV 檔案中讀取的資料填充。

關於使用 LOAD DATA 語句的更多資訊,請檢視 MySQL 官方文件中的本文

相關文章 - MySQL Import