文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  使用 mysqldump 匯出分隔文字格式的資料

9.4.3 使用 mysqldump 匯出分隔文字格式的資料

本節說明如何使用 mysqldump 建立分隔文字匯出檔案。有關重新載入這類匯出檔案的資訊,請參閱 第 9.4.4 節「重新載入分隔文字格式的備份」

如果您使用 mysqldump--tab=dir_name 選項,它會使用 dir_name 作為輸出目錄,並使用每個資料表的兩個檔案將資料表個別匯出到該目錄中。資料表名稱是這些檔案的基本名稱。對於名為 t1 的資料表,檔案會命名為 t1.sqlt1.txt.sql 檔案包含資料表的 CREATE TABLE 陳述式。.txt 檔案包含資料表資料,每行一個資料表列。

下列命令會將 db1 資料庫的內容匯出到 /tmp 資料庫中的檔案

$> mysqldump --tab=/tmp db1

包含資料表資料的 .txt 檔案是由伺服器寫入的,因此這些檔案的所有者是執行伺服器所使用的系統帳戶。伺服器使用 SELECT ... INTO OUTFILE 寫入檔案,因此您必須具有 FILE 權限才能執行此作業,如果給定的 .txt 檔案已存在,則會發生錯誤。

伺服器會將匯出資料表的 CREATE 定義傳送至 mysqldump,而 mysqldump 會將它們寫入 .sql 檔案。因此,這些檔案的所有者是執行 mysqldump 的使用者。

最好 --tab 僅用於匯出本機伺服器。如果您將它與遠端伺服器搭配使用,--tab 目錄必須同時存在於本機和遠端主機上,且 .txt 檔案是由遠端目錄 (在伺服器主機上) 中的伺服器所寫入,而 .sql 檔案是由本機目錄 (在用戶端主機上) 中的 mysqldump 所寫入。

對於 mysqldump --tab,預設情況下,伺服器會將資料表資料寫入 .txt 檔案,每行一個資料列,欄值之間使用 Tab 分隔,欄值周圍沒有引號,並且使用換行符號作為行終止符號。(這些與 SELECT ... INTO OUTFILE 的預設值相同。)

若要允許使用不同的格式寫入資料檔案,mysqldump 支援這些選項

根據您為這些選項指定的任何值,可能需要在命令列上適當地為您的命令解譯器加上引號或跳脫值。或者,使用十六進位表示法指定值。假設您希望 mysqldump 以雙引號括住欄值。若要這麼做,請將雙引號指定為 --fields-enclosed-by 選項的值。但此字元對於命令解譯器而言通常是特殊的,必須特別處理。例如,在 Unix 上,您可以像這樣將雙引號加上引號

--fields-enclosed-by='"'

在任何平台上,您都可以用十六進位指定值

--fields-enclosed-by=0x22

通常會一起使用多個資料格式設定選項。例如,若要以逗號分隔值的格式匯出資料表,並使用歸位/換行符號對 (\r\n) 終止行,請使用此命令 (在單行上輸入)

$> mysqldump --tab=/tmp --fields-terminated-by=,
         --fields-enclosed-by='"' --lines-terminated-by=0x0d0a db1

如果您使用任何資料格式設定選項來匯出資料表資料,您需要在稍後重新載入資料檔案時指定相同的格式,以確保正確解譯檔案內容。