如何解决自动导入CSV文件并上传到数据库
| 我的一位客户的所有产品信息均由外部来源处理。他们以CSV文件的形式提供给我,他们会定期更新并上传到我指定的ftp文件夹中,例如每周一次。 该CSV文件中包含所有产品信息;产品名称,规格,图像位置等 我为客户建立的站点正在运行一个MySQL数据库,我认为该数据库将保存所有产品信息,因此已构建为可以处理所有产品数据。 我的问题是:我该如何创建并运行一个脚本,该脚本将从指定的FTP文件夹中查找新添加的CSV文件,提取数据,并替换相关MySQL表中的所有数据,而这些都是自动完成的? 这甚至有可能吗? 由于我不想使用IFrame选项S,因此不胜感激。解决方法
您可以制作一个脚本,使用php的fread函数读取csv文件,提取每一行并格式化为数组以将其插入数据库。
$fileTemp = \"path-of-the-file.csv\";
$fp = fopen($fileTemp,\'r\');
$datas = array()
while (($data = fgetcsv($fp)) !== FALSE)
{
$data[\'productName\'] = trim($data[0]);
$data[\'spec\'] = trim($data[1]);
$data[\'imageLocation\'] = trim($data[2]);
$datas[] = $data;
}
现在,您已经准备好数组“ 1”,可以通过迭代将其插入数据库。
,根据csv文件应该非常简单
一些csv文件在文本\“ \”周围加上引号,而有些则没有
有些有,引号内的逗号等
根据您的php技能水平,这应该相当容易
您可以从文件中获取修改后的时间戳,以查看它是否是新的
http://nz.php.net/manual/zh/function.lstat.php
打开文件并导入数据
http://php.net/manual/zh/function.fgetcsv.php
插入数据库
http://nz.php.net/manual/zh/function.mysql-query.php
如果很难用fgetcsv解析CSV
您可以尝试类似具有PHP读取功能的PHPExcel项目
http://phpexcel.codeplex.com
,您看过fgetcsv吗?您可能必须设置cron作业,以定期检查新文件。
,所有你需要的是:
将最后一个文件的mtime存储在某个位置(为简单起见,请放在另一个文件中)
由cron每隔X分钟运行一次的脚本
在此脚本中,您只需将带有存储值的csv文件的mtime。如果mtime不同,则运行如下所示的SQL查询:
LOAD DATA LOCAL INFILE \'/var/www/tmp/file.csv\' REPLACE INTO TABLE mytable COLUMNS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'\"\' LINES TERMINATED BY \'\\r\\n\'
(可选)您只需触摸文件即可知道何时执行了上一次数据加载。如果scv \的文件mtime大于\“ helper \”文件,则应触摸它并执行查询。
有关LOAD DATA INFILE SQL语句的文档在这里
当然,查询错误还有余地,但是我希望您能够处理它(您只需要确保正确加载数据,并且在这种情况下只能触摸文件或编写新的mtime)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。