Navicat 部落格

將 MySQL 資料表匯出至 CSV 2022 年 6 月 10 日,由 Robert Gravelle 撰寫

CSV 是一個逗號分隔值(Comma-Separated Values)檔案,允許以表格格式儲存資料。長期以來,它一直是在資料庫之間傳輸資料的首選格式。最近,XML 和 JSON 等的網際網路主導格式也獲得了很大的關注。CSV 檔案非常適合用於資料庫,因為它們能很好地表示資料表資料,並且幾乎可以用於任何試算表程式,例如 Microsoft Excel 或 Google 試算表。在今天的文章中,我們將介紹幾種在 MySQL 中將資料表資料匯出至 CSV 的方法。

使用命令列

包括 MySQL 在內的大多數關聯式資料庫都提供匯出至 CSV 和從 CSV 匯入的命令。

請確保使用 –secure-file-priv 選項啟動 MySQL 伺服器執行個體。它使用 LOAD DATA 和 SELECT INTO FILE 等陳述式設定 MySQL 匯入和匯出資料的目錄。你可以使用以下命令查看目前設定:

SHOW VARIABLES LIKE "secure_file_priv"  

現在要做的就是選取資料並指定輸出檔案的位置。以下是一個輸出整個資料表的陳述式:

TABLE tableName 
INTO OUTFILE 'path/outputFile.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n';

你還可以像在任何 SELECT 查詢中一樣篩選資料。以下是一個同時篩選欄和值的範例:

SELECT columnName, ...
FROM tableName
WHERE columnName = 'value'
LIMIT 1000
INTO OUTFILE 'path/outputFile.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n';

想要包含欄標題?使用 UNION 陳述式很容易做到這一點:

(SELECT 'columnHeading', ...)
UNION
(SELECT column, ...
FROM tableName
INTO OUTFILE 'path-to-file/outputFile.csv’'
FIELDS ENCLOSED BY '"' 
TERMINATED BY ','
ESCAPED BY '"'
LINES TERMINATED BY '\n')

使用 mysqldump

mysqldump 是 MySQL 提供的用於匯出資料表、資料庫和整個伺服器的命令列公用程式。此外,它還可以用於備份和復原。你可以在命令提示字元或終端機中發出以下命令以匯出資料表:

mysqldump -u [username] -p -t -T/path/to/directory [database] [tableName] --fields-terminated-by=,

使用 Navicat 的匯出精靈

Navicat 16 for MySQL 有一個非常強大的匯出(和匯入)精靈,可以將資料匯出至多種格式,包括 .xlsx、.json 和 .sql。若要啟動導出嚮導,請選取相應的資料表,按右鍵 -> 匯出精靈,然後選取格式:

export_formats (50K)

你可以選擇匯出一個資料表、整個資料庫或於兩者之間的任何資料表:

select_tables (71K)

如果你不想匯出所有欄,還可以選取所需的欄位:

select_fields (40K)

Navicat 有大量選項,例如包括標題、分隔符號、錯誤處理常式等等:

other_options (49K)

總結

CSV 並非一種完美的格式,並且有一定的局限性。例如,不能以此格式儲存資料類型或公式。儘管如此,CSV 仍然是一種非常重要的資料傳輸格式,每個 DBA 都應該熟悉它。

Navicat 文章
頻道記錄
分享
部落格封存檔