3

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

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

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

4

3 回答 3

4

-------------------- 更新(更好的答案 - 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 月) ------------------

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

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

笔记:

  1. 这将在调度程序中显示您的密码。
  2. 如果 mysql 不在您的路径中(调度程序将作为该路径运行),请在该行中指定路径。如果有疑问,请将“c:\progam files(x86)\mysql\bin\mysql”或 mysql.exe 所在的任何位置
  3. 虽然 -u 和用户名之间以及 -e 和评论之间有一个空格,但 -p 和密码之间没有空格。

更多阅读: - Google for tech scheduler(添加您的 Windows 风格)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

于 2012-12-19T23:31:49.227 回答
3

据我所知,phpmyadmin 没有办法做到这一点,但是你可以从脚本中做到这一点,这将允许你在 linux 中创建一个 cronjob 或在 Windows 中创建一个计划任务,以将 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 中运行它以在您想要的表中获取您想要的文件。

于 2012-12-19T22:33:56.117 回答
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-优秀/

或者,您可以使用 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

于 2012-12-19T22:21:22.277 回答