0
私は3つのテーブル(ログデータ)を持つMySQLデータベースを持っています。各テーブルは同じ構造を持っています。名前がタイムスタンプのMySQLイベント.csv出力ファイル
ここでは、6ヵ月ごとに実行され、半年より古いcsvファイル内のすべての行をエクスポートし、2番目に削除するイベントを書きたいと考えています。 filnameには、エクスポートのタイムスタンプを含める必要があります。私は、静的な名前でテーブルをエクスポートしようとした初めに
- (テストのための短い時間intervallsとここに)うまく機能:
CREATE EVENT exportLog
ON SCHEDULE
EVERY 1 MINUTE
DO
SELECT *
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/exporttest.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM mytable WHERE timestamp < (NOW() - INTERVAL 5 DAY)
今私を含むダイナミックなファイル名でこれを処理しようとします輸出のタイムスタンプ。したがって、古いファイルも上書きされません。しかし、これは動作しません。誰かが助けることができますか?
CREATE EVENT exportLog
ON SCHEDULE
EVERY 1 MINUTE
DO
BEGIN
SET @sql_stmt := concat("SELECT * FROM logtable INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/export_", DATE_FORMAT(now(),'%Y-%m-%d %H%i%s'),".csv'");
PREPARE extrct FROM @sql_stmt;
EXECUTE extrct;
DEALLOCATE PREPARE extrct;
END $$
DELIMITER;
ありがとうございました!
ご回答ありがとうございます。私はあなたのセットステートメントを使用するとき、私はまだ構文エラーがあります:セミコロンがありません。 – Tony
最後にセミコロンを適用してみますが、それがなくても機能しました – Alexey
あなたの 'show full processlist' continsイベントスケジューラはどうですか? – Alexey