加载数据 infile 每行跳过 1 行
Load data infile skipping 1 row in every each rows
我正在尝试使用 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"
这是我的加载数据 infile 脚本
$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”吗?
我正在尝试使用 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"
这是我的加载数据 infile 脚本
$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”吗?