MySQL 8.0 参考手册  / 第 7 章备份与恢复  / 7.4 使用 mysqldump 进行备份  /  7.4.3 使用 mysqldump 以定界文本格式转储数据

7.4.3 使用 mysqldump 以定界文本格式转储数据

本节介绍如何使用mysqldump 创建分隔文本转储文件。有关重新加载此类转储文件的信息,请参阅 第 7.4.4 节,“重新加载分隔文本格式备份”

如果您使用该 选项调用mysqldump ,它将用作输出目录,并使用每个表的两个文件将表单独转储到该目录中。表名是这些文件的基本名称。对于名为 的表,文件名为和 。该文件包含表的语句。该文件包含表格数据,每个表格行一行。 --tab=dir_namedir_namet1t1.sqlt1.txt.sqlCREATE 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每行​​一行写入文件,列值之间有制表符,列值周围没有引号,换行符作为行终止符。(这些默认值与 . 相同 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

如果您使用任何数据格式选项来转储表数据,您需要在稍后重新加载数据文件时指定相同的格式,以确保正确解释文件内容。