自动导入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)。     

要回复问题请先登录注册