Spec-Zone .ru
спецификации, руководства, описания, API
|
Механизмы хранения CSV поддерживают CHECK
и REPAIR
операторы, чтобы проверить и если возможное восстановление поврежденная таблица CSV.
Работая CHECK
оператор, файл CSV будет проверен на законность, ища корректных
разделителей полей, оставленные поля (соответствие или без вести пропавшие кавычек), корректное число полей по
сравнению с табличным определением и существованием соответствующего метафайла CSV. Первая недопустимая
обнаруженная строка сообщит об ошибке. Проверка допустимой таблицы производит вывод как показанный ниже:
mysql> check table csvtest;
+--------------+-------+----------+----------+| Table | Op | Msg_type | Msg_text |+--------------+-------+----------+----------+| test.csvtest | check | status | OK |+--------------+-------+----------+----------+1 row in set (0.00 sec)
Проверка на поврежденной таблице возвращает отказ:
mysql> check table csvtest;
+--------------+-------+----------+----------+| Table | Op | Msg_type | Msg_text |+--------------+-------+----------+----------+| test.csvtest | check | error | Corrupt |+--------------+-------+----------+----------+1 row in set (0.01 sec)
Если проверка перестала работать, таблица отмечается, поскольку разрушенный (повреждают). Как только таблица
была отмечена как поврежденная, она автоматически восстанавливается когда Вы следующий запуск CHECK
или выполните a SELECT
оператор. Соответствующее поврежденное состояние и новое состояние будут выведены на экран, работая CHECK
:
mysql> check table csvtest;
+--------------+-------+----------+----------------------------+| Table | Op | Msg_type | Msg_text |+--------------+-------+----------+----------------------------+| test.csvtest | check | warning | Table is marked as crashed || test.csvtest | check | status | OK |+--------------+-------+----------+----------------------------+2 rows in set (0.08 sec)
Чтобы восстановить таблицу, можно использовать REPAIR
, это копирует так много
допустимых строк с существующих данных CSV насколько возможно, и затем заменяет существующий файл CSV
восстановленными строками. Любые строки вне поврежденных данных теряются.
mysql> repair table csvtest;
+--------------+--------+----------+----------+| Table | Op | Msg_type | Msg_text |+--------------+--------+----------+----------+| test.csvtest | repair | status | OK |+--------------+--------+----------+----------+1 row in set (0.02 sec)
Отметьте, что во время восстановления, только строки от файла CSV до первой поврежденной строки копируются в новую таблицу. Все другие строки от первой поврежденной строки до конца таблицы удаляются, даже допустимые строки.