本節說明如何使用 mysqldump 來建立分隔文字的傾印檔案。有關重新載入此類傾印檔案的資訊,請參閱 第 9.4.4 節,〈重新載入分隔文字格式的備份〉。
如果您使用 mysqldump 與 --tab=
選項,它會使用 dir_name
dir_name
作為輸出目錄,並使用每個表格的兩個檔案,將表格個別傾印到該目錄中。表格名稱是這些檔案的基礎名稱。對於名為 t1
的表格,檔案名稱為 t1.sql
和 t1.txt
。.sql
檔案包含表格的 CREATE TABLE
語句。.txt
檔案包含表格資料,每行一個表格列。
以下命令會將 db1
資料庫的內容傾印到 /tmp
資料庫中的檔案
$> mysqldump --tab=/tmp db1
包含表格資料的 .txt
檔案由伺服器寫入,因此它們的所有者是用於執行伺服器的系統帳戶。伺服器使用 SELECT ... INTO OUTFILE
來寫入檔案,因此您必須擁有 FILE
權限才能執行此操作,並且如果給定的 .txt
檔案已存在,則會發生錯誤。
伺服器會將傾印表格的 CREATE
定義傳送至 mysqldump,後者會將它們寫入 .sql
檔案。因此,這些檔案的所有者是執行 mysqldump 的使用者。
最好只使用 --tab
來傾印本機伺服器。如果您將它與遠端伺服器搭配使用,--tab
目錄必須同時存在於本機和遠端主機上,並且 .txt
檔案由遠端目錄(伺服器主機上)的伺服器寫入,而 .sql
檔案由 mysqldump 寫入本機目錄(用戶端主機上)。
對於 mysqldump --tab,伺服器預設會將表格資料寫入 .txt
檔案,每行一個列,欄值之間以 Tab 分隔,欄值周圍沒有引號,並以換行符號作為行終止符。(這些與 SELECT ... INTO OUTFILE
的預設值相同。)
為了能夠使用不同的格式寫入資料檔案,mysqldump 支援以下選項
用於分隔欄值的字串(預設值:Tab)。
用於括住欄值的字元(預設值:無字元)。
--fields-optionally-enclosed-by=
char
用於括住非數值欄值的字元(預設值:無字元)。
用於跳脫特殊字元的字元(預設值:不跳脫)。
行終止字串(預設值:換行符號)。
根據您為這些選項中的任何一個指定的值,可能需要在命令列上適當地引用或跳脫該值,以符合您的命令直譯器。或者,使用十六進位標記法指定該值。假設您希望 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
如果您使用任何資料格式化選項來傾印表格資料,您需要在稍後重新載入資料檔案時指定相同的格式,以確保正確解譯檔案內容。