相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  使用 mysqldump 转储分隔文本格式的数据

9.4.3 使用 mysqldump 转储分隔文本格式的数据

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

如果使用 --tab=目录名 选项调用 mysqldump,它会将 目录名 用作输出目录,并使用两个文件将表分别转储到该目录中。表名是这些文件的基本名称。对于名为 t1 的表,文件名为 t1.sqlt1.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 文件,每行一行,列值之间用制表符分隔,列值周围没有引号,并使用换行符作为行终止符。(这些默认值与 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

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