如何通过php将csv(以分号分隔)导入mysql?

时间:2019-02-13 09:05:15

标签: php mysql csv

我得到了以下代码,该代码实际上适用于以逗号分隔的csv文件。但是由于位于德国的事实,我需要用分号分隔进口。谁能告诉我在代码中可以更改的地方?

非常感谢!

if(isset($_POST['importSubmit'])){

    //validate whether uploaded file is a csv file
    $csvMimes = array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain');
    if(!empty($_FILES['file']['name']) && in_array($_FILES['file']['type'],$csvMimes)){
        if(is_uploaded_file($_FILES['file']['tmp_name'])){

            //open uploaded csv file with read only mode
            $csvFile = fopen($_FILES['file']['tmp_name'], 'r');

            //skip first line
            fgetcsv($csvFile);

            //parse data from csv file line by line
            while(($line = fgetcsv($csvFile)) !== FALSE){
                    $connection->query("INSERT INTO adressen (name, email, status) VALUES ('".$line[0]."','".$line[1]."','".$line[2]."')");

            }

            //close opened csv file
            fclose($csvFile);

            $qstring = '?status=succ';
        }else{
            $qstring = '?status=err';
        }
    }else{
        $qstring = '?status=invalid_file';
    }
}

2 个答案:

答案 0 :(得分:1)

您可以在分隔符上放置一个定界符。 请查看php文档,它是一个有很多帮助的旧函数 http://php.net/manual/en/function.fgetcsv.php

答案 1 :(得分:0)

您可以使用带有分隔符选项的LOAD DATA LOCAL INFILE直接从本地文件系统加载到表中。

连接到MySQL时,您需要启用PDO::MYSQL_ATTR_LOCAL_INFILE