Как я могу создать событие MySQL для автоматического добавления недавно перемещенных файлов изображений с моего ноутбука?

Я пытаюсь создать событие MySQL, чтобы файлы автоматически добавлялись в мою базу данных MySQL. По сути, я сейчас использую сервер XAMPP, поэтому все файлы изображений, связанные с моим веб-сайтом / базой данных, находятся в каталоге 'C:\Users\Mus\server\htdocs\images'. Всякий раз, когда я помещаю файл изображения в этот каталог; Мне нужно, чтобы этот файл автоматически загружался в базу данных через событие MySQL, которое я пытаюсь создать. Это означает, что база данных должна постоянно проверять наличие новых файлов с интервалами времени, скажем, 5 секунд, и, если новый файл был добавлен в указанный каталог, автоматически будет создана новая запись для изображения (в указанной таблице) и на в то же время изображение будет загружено в ту же таблицу в базе данных.

Код SQL, который я использовал до сих пор:

CREATE EVENT 'eventnov' ON SCHEDULE EVERY 5 SECOND STARTS '2015-10-27 00:00:00' ENDS '2015-10-28 00:00:00' DO INSERT INTO 'images_11_nov' SELECT NOW();

Я понимаю, что строки 5 и 6, вероятно, совершенно неверны, но я попытался исследовать существующие проблемы и не нашел удачи. Я просмотрел официальную документацию по MySQL и, к сожалению, не могу найти ничего, имеющего отношение к моей конкретной проблеме. Я не знаю синтаксиса, чтобы MySQL делал все следующее в одном событии MySQL:

  1. Проверьте указанный каталог файлов (C:\Users\Mus\server\htdocs\images) с установленными временными интервалами в 5 секунд и ЕСЛИ в этом каталоге есть только что перемещенное изображение....(номер 2)
  2. Автоматически создать запись в таблице 'images_11_nov' в качестве заполнителя для нового изображения и....(номер 3)
  3. Автоматически загрузите эти новые файлы изображений (которые недавно были перемещены в "C: \ Users \ Mus \ server \ htdocs \ images") и вставьте их в таблицу "images_11_nov".

Может ли кто-нибудь помочь мне завершить приведенный выше код для выполнения этих необходимых функций? Если мне нужно предоставить больше информации, пожалуйста, дайте мне знать, и я обязуюсь.

  • Редактировать 1: имена столбцов для таблицы 'images_11_nov': 'title' (varchar), 'imgdata' (BLOB), 'picid' (INT), 'datetime' (метка времени).
  • Редактировать 2: я изменил код SQL в отношении ответа Jayesh Dhandha, но я все еще получаю синтаксические ошибки в MySQL. Обновленный код выглядит следующим образом:

CREATE EVENT 'eventnov' ON SCHEDULE EVERY 5 SECOND STARTS '2015-10-27 00:00:00' ENDS '2015-10-28 00:00:00' SELECT count(*) 'images_11_nov' system(ls C:\Users\Mus\server\htdocs\images | wc -l) system(ls -t | head -1) DO INSERT INTO 'images_11_nov';

1 ответ

Да, это очень легко. Вы должны сделать следующее задание.

  1. Получить количество строк в вашей таблице с помощью select count(*) table_name;
  2. используйте системную команду в указанном вами каталоге

    system(ls C:\Users\Mus\server\htdocs\images | wc -l)

  3. Это даст вам количество файлов, доступных в указанном каталоге.

  4. Теперь сравните это количество с количеством базы данных и проверьте, равны они или нет.

  5. Если оно увеличено на 1, запустите простую системную команду, чтобы узнать последний добавленный файл в каталоге.

  6. system(ls -t | head -1)

Здесь ls -t выведет список файлов по времени, а pipe с head даст вам имя последнего добавленного файла.

Я надеюсь, что это поможет вам.

С наилучшими пожеланиями, Джаеш Дхандха

Другие вопросы по тегам