【问题标题】:Import CSV file in Mysql using PHP but only 214 rows out of 236 rows are imported使用 PHP 在 Mysql 中导入 CSV 文件,但仅导入 236 行中的 214 行
【发布时间】:2019-02-03 20:03:18
【问题描述】:

我必须导入一个 236 行的 CSV 文件。但是只导入了 144/213 行。 我的服务器只支持 mysql 命令。它不支持mysqli。

在此处输入代码

fgetcsv($file);
fgetcsv($file);
while (($getData = fgetcsv($file, 10000, ",")) !== FALSE)
{
$sql = "INSERT into branchiss2 (date,bank_id,branch_id,coa_id,coa_des,amount,is_conv,off_ind,bl1,bl2,fig_ind,data_cat,field_des,bl3,bl4,bl5,bl6,bl7,bl8,bl9) 
values ('".mysql_real_escape_string($getData[0])."','".mysql_real_escape_string($getData[1])."','".mysql_real_escape_string($getData[2])."','".mysql_real_escape_string($getData[3])."','".mysql_real_escape_string($getData[4])."','".mysql_real_escape_string($getData[5])."','".mysql_real_escape_string($getData[6])."','".mysql_real_escape_string($getData[7])."','".mysql_real_escape_string($getData[8])."','".mysql_real_escape_string($getData[9])."','".mysql_real_escape_string($getData[10])."','".mysql_real_escape_string($getData[11])."','".mysql_real_escape_string($getData[12])."','".mysql_real_escape_string($getData[13])."','".mysql_real_escape_string($getData[14])."','".mysql_real_escape_string($getData[15])."','".mysql_real_escape_string($getData[16])."','".mysql_real_escape_string($getData[17])."','".mysql_real_escape_string($getData[18])."','".mysql_real_escape_string($getData[19])."')";

$result = mysql_query($sql);
     }
fclose($file);  

     }

【问题讨论】:

  • 显示完整的csv文件代码
  • 我编辑了我的问题和代码。请看。
  • 检查它中断的行,可能是 CSV 文件存在数据质量问题 - 缺少逗号或多余的逗号。

标签: php mysql csv


【解决方案1】:

可能由于内存问题而停止,请在代码开头添加这 2 行代码,希望对您有所帮助或使用 phpexcel 库。

ini_set("memory_limit","512M");
ini_set('max_execution_time', 0);

【讨论】:

    【解决方案2】:

    请试试这个: MYSQL LOAD DATA INFILE 语句用于以非常高的速度将文本文件中的行读取到表中

    例如:-

    $import_query = <<<eof
        LOAD DATA INFILE '$fileName'
         INTO TABLE tableName
         FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
         LINES TERMINATED BY '\n'
        (column1,column2,column3)
         SET column4 = CURRENT_TIMESTAMP;
    eof;
    
    $db->query($import_query);
    

    【讨论】:

      【解决方案3】:

      您可以将您的 php.ini 文件集 ma​​x_execution_time 修改为您认为合适的时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-02
        • 1970-01-01
        • 1970-01-01
        • 2010-11-19
        • 2017-02-13
        • 2014-03-15
        • 1970-01-01
        相关资源
        最近更新 更多