我正在尝试在计时器上执行查询(每天一次)。
每次查询都是一样的。我从 excel 中获取数据并将其保存到我的计算机桌面。然后从file.csv
PHPmyAdmin 更新。
在 phpmyadmin 中,我看不到任何从界面自动化的选项。有人可以免费帮我完成这个吗?
我正在尝试在计时器上执行查询(每天一次)。
每次查询都是一样的。我从 excel 中获取数据并将其保存到我的计算机桌面。然后从file.csv
PHPmyAdmin 更新。
在 phpmyadmin 中,我看不到任何从界面自动化的选项。有人可以免费帮我完成这个吗?
-------------------- 更新(更好的答案 - 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'"
笔记:
更多阅读: - 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
据我所知,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 中运行它以在您想要的表中获取您想要的文件。
您最好安排一个 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);