本节介绍如何使用mysqldump 创建分隔文本转储文件。有关重新加载此类转储文件的信息,请参阅 第 7.4.4 节,“重新加载分隔文本格式备份”。
如果您使用该
选项调用mysqldump ,它将用作输出目录,并使用每个表的两个文件将表单独转储到该目录中。表名是这些文件的基本名称。对于名为 的表,文件名为和
。该文件包含表的语句。该文件包含表格数据,每个表格行一行。
--tab=
dir_name
dir_name
t1
t1.sql
t1.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支持这些选项:
用于分隔列值的字符串(默认值:制表符)。
包含列值的字符(默认值:无字符)。
--fields-optionally-enclosed-by=
char
包含非数字列值的字符(默认值:无字符)。
转义特殊字符的字符(默认值:不转义)。
行终止字符串(默认值:换行符)。
根据您为这些选项中的任何一个指定的值,可能需要在命令行上为您的命令解释器适当地引用或转义该值。或者,使用十六进制表示法指定值。假设您希望
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
如果您使用任何数据格式选项来转储表数据,您必须在稍后重新加载数据文件时指定相同的格式,以确保正确解释文件内容。