使用PHPmyAdmin在计时器上设置SQL查询

时间:2012-12-19 22:09:54

标签: php sql phpmyadmin

我正在尝试对计时器执行查询(同时每天一次)。

每次查询都是一样的。我从excel中获取数据并将其保存到我的计算机桌面上。然后使用PHPmyAdmin从file.csv更新。

在phpmyadmin中,我没有看到任何从界面自动化的选项。有人可以帮我免费完成这个吗?

3 个答案:

答案 0 :(得分:2)

您可能最好安排一个Cronjob来运行脚​​本来执行此操作。 您可以创建一个PHP脚本来检查Excel文件,然后将其输入MySQL。

http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/ http://code.google.com/p/php-excel/

或者,您可以使用MySQL中的事件调度程序来安排特定操作。但是,对于您的应用程序,PHP或其他脚本语言可能更适合处理从Excel电子表格中读取。

示例:

CREATE EVENT import_data
    ON SCHEDULE AT '2006-02-10 23:59:00'
    DO LOAD DATA LOCAL INFILE '/importfile.csv' INTO TABLE test_table
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (field1, filed2, field3); 

http://dev.mysql.com/doc/refman/5.1/en/events.html

答案 1 :(得分:2)

从我所知道的phpmyadmin无法做到这一点,你可以从脚本中做到这一点,这将允许你在linux中创建一个cronjob或在Windows中创建一个schedueled任务,将CSV导入到你的数据库中。 phpMyAdmin无论如何都会运行这样的命令。

您正在寻找的SQL命令是

load data ' . LOCAL_DATA . ' 
infile "/path_on_disk/file.csv" 
into table `table_name` ' . $details['import_options'] . ' 
(brand, sku, name, retail_price, url, image, short_category, stock_availability, freight_cost, retail_price, currency);');

LOCAL_DATA - 可以为空或字符串“LOCAL”。测试它是如何为你运行的,对于我的计算机我需要LOCAL,对于服务器我不需要。

$ details ['import_options'] - 可以是很多东西,同样最好的方法是测试它是如何为你的文件运行的。我过去曾用过

fields terminated by "," lines terminated by "\n" IGNORE 1 LINES

fields terminated by "\t" enclosed by "\"" lines terminated by "\n" IGNORE 1 LINES

fields terminated by "," optionally enclosed by "\"" lines terminated by "\n" IGNORE 1 LINES

你可以在php中运行它,以便在你想要的表格中获得你想要的文件。

答案 2 :(得分:2)

-------------------更新(更好的答案 - 2014年1月)--------------------

您可以使用MySQL甚至调度程序(http://dev.mysql.com/doc/refman/5.1/en/events.html)。允许您在MySQL中设置在指定时间运行查询的事件。

手册中的样本

CREATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
  DO
    UPDATE myschema.mytable SET mycol = mycol + 1;

------------------原始答案(2012年12月)------------------

最简单的方法是运行mysql命令的CRON作业或Windows任务计划程序作业:

mysql -u [username] -p[password] -e "UPDATE from 'filecsv'"

注意:

  1. 这将在调度程序中显示您的密码。
  2. 如果mysql不在您的路径中(sceduler将以其身份运行),请指定行中的路径。如果有疑问,请输入“c:\ progam files(x86)\ mysql \ bin \ mysql”或mysql.exe所在的位置
  3. 虽然-u和username之间以及-e和注释之间有空格,但-p和密码之间没有空格。
  4. 更多阅读: - Google for tech scheduler(添加你的窗口风格)https://www.google.com.au/search?q=using+windows+task+scheduler - MySQL命令行“执行”(以及其他选项)http://dev.mysql.com/doc/refman/5.5/en/mysql-command-options.html#option_mysql_execute