7.4.3 使用 mysqldump 转储定界文本格式的数据
本节介绍如何使用mysqldump创建带分隔符的转储文件。有关重新加载此类转储文件的信息,请参见第 7.4.4 节“重新加载定界文本格式备份”。
如果使用--tab=dir_name选项调用mysqldump,它将使用* dir_name
*作为输出目录,并使用每个 table 的两个文件分别转储该目录中的 table。table 名是这些文件的基本名称。对于名为t1
的 table,文件名为t1.sql
和t1.txt
。 .sql
文件包含该 table 的CREATE TABLE语句。 .txt
文件包含 table 数据,每 table 行一行。
以下命令将db1
数据库的内容转储到/tmp
数据库中的文件中:
shell> mysqldump --tab=/tmp db1
包含 table 数据的.txt
文件由服务器写入,因此它们由用于运行服务器的系统帐户拥有。服务器使用选择...进入外档写入文件,因此您必须具有FILE特权才能执行此操作,并且如果给定的.txt
文件已经存在,则会发生错误。
服务器将转储 table 的CREATE
定义发送到mysqldump,然后将其写入.sql
文件。因此,这些文件归执行mysqldump的用户所有。
最好仅将--tab用于转储本地服务器。如果将它与远程服务器一起使用,则 localhost 和远程主机上都必须存在--tab目录,并且.txt
文件将由服务器写入远程目录(在服务器主机上),而.sql
文件将被写入通过本地目录中的mysqldump(在 Client 端主机上)。
对于mysqldump --tab,服务器默认将 table 数据写入.txt
文件每行一行,并在各列值之间使用制 table 符,各列值之间不带引号,并使用换行符作为行终止符。 (这些默认值与选择...进入外档相同)。
为了使数据文件可以使用其他格式写入,mysqldump支持以下选项:
用于分隔列值的字符串(默认值:制 table 符)。
包含列值的字符(默认值:无字符)。
包含非数字列值的字符(默认值:无字符)。
用于转义特殊字符的字符(默认值:不转义)。
行终止字符串(默认值:换行符)。
根据为这些选项中的任何一个指定的值,在命令行上可能有必要为命令解释器适当地加引号或转义该值。或者,使用十六进制 table 示法指定值。假设您希望mysqldump用双引号引起来的列值。为此,请将双引号指定为--fields-enclosed-by选项的值。但是此字符通常是命令 Interpreter 所特有的,必须加以特殊对待。例如,在 Unix 上,您可以这样引用双引号:
--fields-enclosed-by='"'
在任何平台上,您都可以以十六进制指定值:
--fields-enclosed-by=0x22
通常会同时使用多个数据格式选项。例如,要转储以逗号分隔的值格式的 table,并以回车/换行对(\r\n
)结尾的行转储,请使用此命令(在单行中 Importing):
shell> mysqldump --tab=/tmp --fields-terminated-by=,
--fields-enclosed-by='"' --lines-terminated-by=0x0d0a db1
如果您使用任何数据格式化选项来转储 table 数据,则稍后需要重新加载数据文件时,需要指定相同的格式,以确保正确解释文件内容。