Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 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文件已经存在。

服务器将dump的表格的创建定义发送到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

通常,人们会同时使用多个数据格式选项。例如,要以逗号分隔的值(CSV)格式导出表格,并且每行以回车符/换行符对(\r\n)结束,您可以使用以下命令:

$> mysqldump --tab=/tmp --fields-terminated-by=,
         --fields-enclosed-by='"' --lines-terminated-by=0x0d0a db1

如果您在导出数据时使用了任何数据格式选项,那么当您稍后重新加载数据文件时,必须指定相同的格式,以确保正确解释文件内容。