Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Dumping Data in Delimited-Text Format with 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,然后将它们写入 .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

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