4

我正在尝试创建一个 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. 以 5 秒的设定时间间隔检查指定的文件目录(C:\Users\Mus\server\htdocs\images),如果有新移动的图像进入所述目录....(数字 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:我已经更改了关于 Jayesh Dhandha 答案的 SQL 代码,但我仍然在 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';

4

1 回答 1

0

是的,这很容易。您必须执行以下任务。

  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将按时间列出文件,带有head的管道将为您提供最新添加的文件的名称。

我希望这能帮到您。

问候, Jayesh Dhandha

于 2015-10-27T05:18:46.647 回答