mysqldump-delimited-text.md 4.0 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
### 7.4.3 使用 mysqldump 以分隔文本格式转储数据

本节介绍如何使用[**mysql转储**](mysqldump.html)创建分隔文本转储文件。有关重新加载此类转储文件的信息,请参阅[第 7.4.4 节,“重新加载分隔文本格式的备份”](reloading-delimited-text-dumps.html).

如果你调用[**mysql转储**](mysqldump.html)[`--tab=*`目录名`*`](mysqldump.html#option_mysqldump_tab)选项,它使用*`目录名`*作为输出目录,并使用每个表的两个文件在该目录中单独转储表。表名是这些文件的基本名称。对于名为`t1`, 文件被命名`t1.sql``t1.txt`.这`.sql`文件包含一个[`创建表`](create-table.html)表的声明。这`。文本文件`文件包含表数据,每行一行。

以下命令转储文件的内容`db1`数据库中的文件`/tmp`数据库:

```
$> mysqldump --tab=/tmp db1
```

`。文本文件`包含表数据的文件由服务器写入,因此它们归用于运行服务器的系统帐户所有。服务器使用[`选择...进入文件`](select-into.html)写文件,所以你必须有[`文件`](privileges-provided.html#priv_file)执行此操作的权限,如果给定`。文本文件`文件已存在。

服务器发送`创建`转储表的定义[**mysql转储**](mysqldump.html), 将它们写入`.sql`文件。因此,这些文件归执行的用户所有[**mysql转储**](mysqldump.html).

最好是[`- 标签`](mysqldump.html#option_mysqldump_tab)仅用于转储本地服务器。如果将它与远程服务器一起使用,则[`- 标签`](mysqldump.html#option_mysqldump_tab)目录必须同时存在于本地和远程主机上,并且`。文本文件`文件由服务器写入远程目录(在服务器主机上),而`.sql`文件由[**mysql转储**](mysqldump.html)在本地目录中(在客户端主机上)。

为了[**mysqldump --选项卡**](mysqldump.html),服务器默认将表数据写入`。文本文件`文件每行一行,列值之间有制表符,列值周围没有引号,换行符作为行终止符。(这些默认值与[`选择...进入文件`](select-into.html).)

要使数据文件能够使用不同的格式写入,[**mysql转储**](mysqldump.html)支持这些选项:

-   [`--fields-terminated-by=*`字符串`*`](mysqldump.html#option_mysqldump_fields)

    用于分隔列值的字符串(默认值:tab)。

-   [`--fields-enclosed-by=*`字符`*`](mysqldump.html#option_mysqldump_fields)

    包含列值的字符(默认值:无字符)。

-   [`--fields-optional-enclosed-by=*`字符`*`](mysqldump.html#option_mysqldump_fields)

    包含非数字列值的字符(默认值:无字符)。

-   [`--fields-escaped-by=*`字符`*`](mysqldump.html#option_mysqldump_fields)

    转义特殊字符的字符(默认:不转义)。

-   [`--lines-terminated-by=*`字符串`*`](mysqldump.html#option_mysqldump_lines-terminated-by)

    行终止字符串(默认值:换行符)。

    根据您为这些选项中的任何一个指定的值,可能需要在命令行上为您的命令解释器适当地引用或转义该值。或者,使用十六进制表示法指定值。假设你想要[**mysql转储**](mysqldump.html)在双引号内引用列值。为此,请将双引号指定为[`--fields-enclosed-by`](mysqldump.html#option_mysqldump_fields)选项。但是这个字符对于命令解释器来说通常是特殊的,必须特殊对待。例如,在 Unix 上,您可以像这样引用双引号:


```
--fields-enclosed-by='"'
```

在任何平台上,您都可以指定十六进制值:

```
--fields-enclosed-by=0x22
```

一起使用几个数据格式选项是很常见的。例如,以逗号分隔值格式转储表格,其中行以回车符/换行符对终止 (`\r\n`),使用此命令(在一行中输入):

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

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