Php 每日将.csv文件从sftp导入MySQL数据库

Php 每日将.csv文件从sftp导入MySQL数据库,php,mysql,csv,Php,Mysql,Csv,我正在尝试自动化一项简单的日常任务:在一台SFTP服务器上有多个.csv文件,我想将它们导入MySQL数据库 文件名的结构类似于20160601-1.csv、20160601-2.csv、20160601-3.csv等。文件数量从每天8到20不等。.csv的布局始终相同(10列中有一些空字段) 我知道这不是很详细,但我现在搜索了几个小时,我不知道从哪里开始 我认为php是一个很好的方法?或者Python?您可以在PHP中使用fgetcsv()函数来实现这一点 读取csv文件的示例代码

我正在尝试自动化一项简单的日常任务:在一台SFTP服务器上有多个.csv文件,我想将它们导入MySQL数据库

文件名的结构类似于20160601-1.csv、20160601-2.csv、20160601-3.csv等。文件数量从每天8到20不等。.csv的布局始终相同(10列中有一些空字段)

我知道这不是很详细,但我现在搜索了几个小时,我不知道从哪里开始


我认为php是一个很好的方法?或者Python?

您可以在PHP中使用fgetcsv()函数来实现这一点

读取csv文件的示例代码




    //read file
        $fp = fopen($filename,'r') or die("can't open file");
        $csv_line=fgetcsv($fp);
        $last=0;

        $insert_count=0;
        while($csv_line = fgetcsv($fp,1024))
        {
             //$csv_line is an indexed array for values on each line
             //database update code goes here
        }


语言在这里并不重要。你可能可以在任何一个地方做到这一点。您是否需要在将数据放入数据库之前处理这些文件,或者您是否能够在MySQL中简单地使用
加载数据填充…
?如果是这样的话,您可能可以在简单的bash脚本中实现。@dragoste:如果是从shell实现的,我更喜欢mysqlimport实用程序而不是
加载数据。但除此之外,我同意你刚才所说的一切。@dragoste这是一个以制表符分隔的文件,我需要忽略前5行。我使用标签分隔文件的经验是,空字段有时会导致加载数据和加载数据填充出现一些问题(我想是因为拖尾?),因此我用逗号的en import the csv to mysql替换所有标签(/t)。但是如果有直接导入的选项,那就太好了!值得注意的是,它将为每一行执行单独的查询。对于需要较长时间处理的大型文件。最好是批量插入,例如每100或1000行插入一行。您可以在单个查询中插入多行,如
insert INTO tbl_name(a,b,c)值(1,2,3)、(4,5,6)、(7,8,9)