Переопределение MySQL INTO OUTFILE существующий файл?

Документация показывает , что make_absolute имеет необязательный второй параметр, который по умолчанию соответствует вашему текущему пути:

path absolute(const path& p, const path& base=current_path());

Попробуйте это без второго параметра и посмотрите, вернет ли он результаты, которые вы ищете.

51
задан Cœur 3 April 2017 в 23:55
поделиться

4 ответа

Нет, перезаписать его невозможно. Из docs :

имя_файла не может быть существующим файлом, что, помимо прочего, предотвращает удаление таких файлов, как / etc / passwd и таблиц базы данных.

Возможно, было бы лучше использовать новое имя файла каждую ночь, так как наличие нескольких резервных копий означает, что вы можете восстановиться после проблем, которые существовали более суток. Затем вы можете поддерживать символическую ссылку, которая всегда указывает на последний полный CSV.

55
ответ дан 7 November 2019 в 10:18
поделиться

Почему не rm -f /home/sites/example.com/www/files/backup.csv в скрипте, запущенном cron?

Вы можете запустить это изнутри mysql. Просто выйдите в оболочку с помощью \! Например:

Mysql> \! rm -f /home/sites/example.com/www/files/backup.csv

8
ответ дан 7 November 2019 в 10:18
поделиться

Для такой работы я бы поместил ее в файл bash, удалил файл

#!/bin/bash
rm /path/to/backup.csv
./backup_sql_query.sh  <<-- This contains the script to backup to CSV.

Чем лучше вариант - фактически добавить метку времени. В наши дни дисковое пространство недорогое.

3
ответ дан 7 November 2019 в 10:18
поделиться

Нет никакого способа.

Только одна возможная процедура, которую вы можете выполнить с помощью динамического оператора.

CREATE PROCEDURE export_dynamic(IN file_name char(64)) 
BEGIN 
set @myvar = concat('SELECT * INTO OUTFILE ',"'",file_name,"'",' FROM Table1') ; 
PREPARE stmt1 FROM @myvar; 
EXECUTE stmt1; 
Deallocate prepare stmt1; 
END; 
3
ответ дан 7 November 2019 в 10:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: