### 16.4.1 修复和检查 CSV 表

这`CSV`存储引擎支持[`检查表`](check-table.html)和[`维修台`](repair-table.html)声明以验证并在可能的情况下修复损坏的`CSV`桌子。

运行时[`检查表`](check-table.html)声明`CSV`通过查找正确的字段分隔符、转义字段（匹配或缺少引号）、与表定义相比的正确字段数以及是否存在相应的字段来检查文件的有效性`CSV`元文件。发现的第一个无效行会导致错误。检查有效表会产生如下所示的输出：

```
mysql> CHECK TABLE csvtest;
+--------------+-------+----------+----------+
| Table        | Op    | Msg_type | Msg_text |
+--------------+-------+----------+----------+
| test.csvtest | check | status   | OK       |
+--------------+-------+----------+----------+
```

检查损坏的表会返回错误，例如

```
mysql> CHECK TABLE csvtest;
+--------------+-------+----------+----------+
| Table        | Op    | Msg_type | Msg_text |
+--------------+-------+----------+----------+
| test.csvtest | check | error    | Corrupt  |
+--------------+-------+----------+----------+
```

要修复表，请使用[`维修台`](repair-table.html)，它从现有的复制尽可能多的有效行`CSV`数据尽可能，然后替换现有的`CSV`文件与恢复的行。损坏数据之外的任何行都将丢失。

```
mysql> REPAIR TABLE csvtest;
+--------------+--------+----------+----------+
| Table        | Op     | Msg_type | Msg_text |
+--------------+--------+----------+----------+
| test.csvtest | repair | status   | OK       |
+--------------+--------+----------+----------+
```

警告

在修复过程中，只有从`CSV`直到第一个损坏的行的文件都被复制到新表中。从第一个损坏的行到表末尾的所有其他行都将被删除，甚至是有效行。
