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。若要啟動導出嚮導,請選取相應的資料表,按右鍵 -> 匯出精靈,然後選取格式:
你可以選擇匯出一個資料表、整個資料庫或於兩者之間的任何資料表:
如果你不想匯出所有欄,還可以選取所需的欄位:
Navicat 有大量選項,例如包括標題、分隔符號、錯誤處理常式等等:
總結
CSV 並非一種完美的格式,並且有一定的局限性。例如,不能以此格式儲存資料類型或公式。儘管如此,CSV 仍然是一種非常重要的資料傳輸格式,每個 DBA 都應該熟悉它。