【问题标题】:Load a csv file into mysql via php [duplicate]通过php将csv文件加载到mysql [重复]
【发布时间】:2026-01-26 14:50:01
【问题描述】:

可能重复:
Importing CSV data using PHP/MySQL

请告诉我通过 PHP 表单将文件导入 MySQL 数据库的最简单方法

【问题讨论】:

标签: php mysql


【解决方案1】:

可以使用 fgetcsv PHP 函数来完成。

http://php.net/manual/en/function.fgetcsv.php

然后,使用 Mysql INSERT 函数将该数据保存在数据库中。

【讨论】:

    【解决方案2】:

    MySQL 有一个功能 LOAD DATA INFILE,允许在单个 SQL 查询中直接导入 CSV 文件。

    简单示例:

              <?php
                $query = <<<eof
                    LOAD DATA INFILE '$fileName'
                     INTO TABLE tableName
                     FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
                     LINES TERMINATED BY '\n'
                    (field1,field2,field3,etc)
                eof;
    
                $db->query($query);
                ?>
    

    就这么简单。

    没有循环,没有大惊小怪。而且比用 PHP 解析要快得多。

    这里是 MySQL 手册页:http://dev.mysql.com/doc/refman/5.1/en/load-data.html

    希望有所帮助 author

    【讨论】:

    【解决方案3】:

    如果您正在寻找将 csv 文件导入 mysql 的最简单方法,请使用以下方法:

    例如:

    LOAD DATA LOCAL INFILE 'import.csv' INTO TABLE from_csv FIELDS TERMINATED BY ','  LINES TERMINATED BY '\n'  (si, distro, available);
    

    更多阅读:

    http://www.techtrunch.com/linux/import-csv-file-mysql-table

    【讨论】:

      【解决方案4】:

      查看下面的代码

      csv2sql("pre_employee","ch_data.csv");
      
      function csv2sql($table_name,$csvname)
      {
      $fl=fopen($csvname,r);
      //if(!file_exists('a.txt'))
      //{
          $flw=fopen("a.txt",'w');
      //}
      $sql='';
      $i=2;
      //echo $csvname.$data=fgetcsv($fl,1000,",");die();
      while(($data=fgetcsv($fl,1000,","))!=false)
      {
          $sql.="insert into ".$table_name." values('".$data[0]."','".$data[2]."','".$data[3]."');".chr(13);
          $i++;
      }
      //echo $sql;
      fwrite($flw,$sql);
      fclose($flw);
      fclose($fl);
       }
      

      a.txt 是保存你的 sql 的文件名。也不要将这个txt文件导入你的mysql数据库。

      【讨论】:

        【解决方案5】:

        试试这个。这使用一个函数将文件的行读入字符串数组,然后遍历每一行并将列值存储到表中。显然你需要插入你的数据库连接设置和正确的查询。

        function loadData()
        {
           $lines = readInputFromFile("myCSV.csv");
           for ($i = 0; $i < count($lines); $i++)
           (
              $columns = explode(",", $lines[$i]);
              $conn = new PDO("mysql:host=YOUR_HOST;port=YOUR_PORT;dbname=YOUR_DBNAME", "UserName", "Password");
        
              $query = "INSERT INTO MYTABLE VALUES ('".$columns[0]."', '".$columns[1]."', '".$columns[2]."')";      
              $stmt = $conn->prepare($query);
              $stmt->execute();
           )
        }
        
        function readInputFromFile($file)
        {
           $fh = fopen($file, 'r');
           while (!feof($fh))
           {
              $ln = fgets($fh);
              $parts[] = $ln;
           }
        
           fclose($fh);
        
           return $parts;
        }
        

        【讨论】: