php - 加载数据文件中每行跳过 1 行

标签 php mysql load-data-infile

我正在尝试使用 mysql 的 Load Data infile 语法上传我的 csv 文件,但是在将数据上传到数据库后,它只加载一半的行,而且我注意到它是一个不完整的行。就好像所有偶数都只插入了,而奇数没有插入。

这是我的 csv 文件的示例格式:

storeid,txndate,productcategory1,qty,totalamt,uploaddate
"1100","19JAN2019","ADD ONS","1363","333.59","20JAN2019"
"1100","19JAN2019","KFC LP","58","1736.96","20JAN2019"
"1100","19JAN2019","KFC SP","269","1093.02","20JAN2019"
"1100","19JAN2019","LTO","26","495.39","20JAN2019"
"1100","19JAN2019","VALUE","71","534.13","20JAN2019"
"1102","19JAN2019","ADD ONS","244","32.5","20JAN2019"
"1102","19JAN2019","KFC LP","9","239.91","20JAN2019"
"1102","19JAN2019","KFC SP","70","277.63","20JAN2019"
"1102","19JAN2019","LTO","3","88.48","20JAN2019"
"1102","19JAN2019","VALUE","18","99.95","20JAN2019"
"1104","19JAN2019","ADD ONS","930","124.32","20JAN2019"
"1104","19JAN2019","KFC LP","21","680.79","20JAN2019"
"1104","19JAN2019","KFC SP","196","971.11","20JAN2019"
"1104","19JAN2019","LTO","17","338.84","20JAN2019"

这是我的加载数据文件脚本

$loadData = sprintf("
    LOAD DATA local INFILE '%s' IGNORE INTO TABLE prodmix 
    CHARACTER SET UTF8 FIELDS TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' 
    LINES TERMINATED BY '\\n' IGNORE 1 LINES 
    (
        @storeid,
        @txndate,
        @productcategory1,
        @qty, 
        @totalamt, 
        @uploaddate
    )
    SET
    id=null, 
    storeid=@storeid, 
    txndate=@txndate, 
    productcategory1=@productcategory1,
    qty=@qty,
    totalamt=@totalamt,
    uploaddate=@uploaddate,
    unique_row=CONCAT(@txndate,'_',@storeid,'_',
    @productcategory1,'_',@qty,'_',@totalamt,'_',@uploaddate),
    created_at=now()
    ", addslashes($absolute_path));
    if(DB::connection()->getpdo()->exec($loadData)){
        //$total_success = $total_success +1;
        $response['status'] = 'success';                    
    }

什么可能导致每隔一行失败。

最佳答案

您确定您的本地数据 csv 文件行终止字符是“\n”而不是“\r\n”吗?

关于php - 加载数据文件中每行跳过 1 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54286166/

相关文章:

javascript - php 不将 "echoing"表行作为调用 javaScript 函数的链接吗?

mysql - 如何以批处理模式转义 mysql 上的 NULL?

php - 尝试循环输出到表的查询

php - __autoload 与命名空间类给找不到文件的 fatal error

mysql - SQL 查询查找从现在到长时间之间的行

mysql 无法在 xampp 上启动

mysql - 是否可以使用 LOAD DATA INFILE 类型的命令来更新数据库中的行?

sql - mysql "datetime NOT NULL DEFAULT ' 1970-01-0 1' "变成 0000-00-00 00 :00:00

php - 使用显示为 onclick/checkbox id 的 MySQL id

php - json 编码 � 值变为空