バージョン5.1.9で紹介する機能性
CSVストレージエンジンは、損傷したCSVテーブルを検証し、可能であればそれを修正する
CHECK
コマンドと REPAIR
コマンドをサポートします。
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
を実行した時や
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ファイルから最初のダメージを受けた行までだけが、新しいテーブルにコピーされるという事を覚えておいて下さい。それ以外の行は、有効であっても全て除去されます。