MariaDBのLOAD DATA INFILEでのエラー無視の方法


  1. IGNOREキーワードを使用する方法:

LOAD DATA INFILEステートメントの後にIGNOREキーワードを追加することで、エラーが発生した行がスキップされます。例えば、以下のようになります:

LOAD DATA INFILE 'data.txt'
IGNORE INTO TABLE my_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
  1. エラーハンドリング用の変数を使用する方法:

LOAD DATA INFILEステートメント実行前に、エラーハンドリング用の変数を定義し、エラーハンドリングのためのカスタム処理を追加します。例えば、以下のようになります:

DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' -- エラーコードを適宜変更
BEGIN
    -- エラー処理のカスタムコードを記述
END;
LOAD DATA INFILE 'data.txt'
INTO TABLE my_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
  1. エラーログへの書き込みを無効化する方法:

エラーログへの書き込みを無効化することで、エラーが発生してもログに記録されず、処理が続行されます。以下は、my.cnfファイルでエラーログの無効化を行う例です:

[mysqld]
log_error = /dev/null

これらの方法を組み合わせることもできます。例えば、IGNOREキーワードを使用してエラーをスキップし、同時にエラーハンドリング用の変数を定義してカスタム処理を追加することも可能です。

注意点として、エラーを無視することはデータの整合性を損なう可能性があるため、注意が必要です。エラーハンドリングやエラーログの無効化は、開発やテスト環境でのみ使用することを推奨します。

以上が、MariaDBのLOAD DATA INFILEでのエラー無視の方法とコード例の解説です。