【问题标题】:How to Import CSV data from FTP server directory into Mysql?如何将 CSV 数据从 FTP 服务器目录导入 Mysql?
【发布时间】:2015-01-04 02:43:45
【问题描述】:

我想每 6 小时运行一次,从一个 cron、一个 PHP 脚本(或其他任何东西)运行,该脚本将从 FTP 服务器中存在的 csv 文件更新 MySQL 表。

什么 CSV Import/Export 很有趣,但我希望它从目录中选择 CSV 文件而不是手动上传,因为文件名会改变:logdata_*******.csv)。

有人做过这样的事吗?这很容易吗? 任何帮助,将不胜感激。 谢谢

【问题讨论】:

  • 1)获取文件(file_get_content vs cURL)2)加载数据文件
  • 你能给我同样的代码sn-p吗?我对此很陌生,并且一直在玩同样的事情。
  • 如果我有可用的东西,我不介意给你一个 sn-p,但我没有时间为你写 sn-p。不过,我可以保证,通过您自己的努力,您将能够自学如何写出您所描述的内容。我知道这一点,因为我曾经担任过你的职位。谷歌我在之前评论中建议的术语,你就会明白如何写了。
  • 非常感谢 dayulioli!我会考虑的。

标签: php mysql csv cron


【解决方案1】:

这是一个指导你的 php 脚本,你需要根据你的需要改变它,我已经在里面做了一些解释:

如果您想使用 ftp 执行此操作,您还需要建立一个 ftp 连接。

$db_connection = new mysqli("HOST","DB_USER","DB_PASS","DB"); // make mysqli connection to DB

$query = $db_connection->prepare("INSERT INTO yourtable (column1,column2) VALUES (?,?)");

$data = scandir('/PATH/TO/READ'); // Scan the dir your files are in

foreach ($data as $datas) {

if (0 === strpos($datas, 'logdata')) {

   echo $datas."<br />"; //Show all the files that beginn with logdata

$file = 'PATH/TO/FILE/'.$datas;
unset($file[0]); //DELETE THE FIRST LINE IF FILE CONTAINS A HEADLINE ELSE DELETE THIS LINE
foreach ($file as $line) 
{ 
   $column = explode("\t", $line);  // \t stands for tab-delimited, change it to what ever delimites your file (f.e. ; , . )

$example = $column[0]; // get content of first column
$example1 = $column[1]; // get content of second column
// .....          
$query->bind_param('ss',$example, $example1)
$query->execute();


}}}

让我们调用文件 insertscript.php,那么你的 cronjob 将是:

0 */6 * * * nohup php /path/to/file/insertscript.php

nohup 将进程置于后台并为每次运行创建一个文件。如果您不想要这个文件,您可以将您的 cronjob 更改为:

0 */6 * * * nohup php /path/to/file/insertscript.php >/dev/null 2>&1

【讨论】:

  • 这是查找目录中的最新文件还是简单地使用 logdata 处理所有 csv?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 2014-06-02
  • 2015-02-07
  • 2015-03-16
  • 1970-01-01
相关资源
最近更新 更多