上传一个csv并将其导入到mysql数据库中
问题描述:
我正在编写以下脚本,将一个csv文件导入到mysql数据库中。 用户必须先登录,然后才能通过其他文件检查其上传的安全权限,如果该值为true,则可以通过文件上载器上载该文件,该文件仅允许上传csv文件,然后再下载部分导入文件。上传一个csv并将其导入到mysql数据库中
我是否在下面使用了正确的代码?,如果csv布局错误,是否可以拒绝导入?,我只是担心如果csv格式正确,这可能会严重错误。这项功能已经被要求作为这个项目的一项要求,所以我只是想尽可能地让它成为一种白痴证明。
<?php
$uploadedcsv = './uploads/'.$filename.'';
$sql = 'LOAD DATA LOCAL INFILE "'.$uploadedcsv.'" INTO TABLE '.$table.' FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY """" IGNORE 1 LINES' or die(mysql_error());
?>
答
除非你是100%依赖于用户,似乎你不是, 这将是很好,不要盲目导入上传的文件,但首先要检查它是否是正确的。
要做到这一点,您需要打开并阅读文件,例如与fgetcsv
并逐行检查数据一致性。
你可以在网上找到很多例子。
下面就介绍几种:
答
它可以通过MySQL的完成,但默认情况下LOAD DATA INFILE预计比CSV格式不同。从文档:
If you specify no FIELDS or LINES clause, the defaults are the same as if you had written this:
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
LINES TERMINATED BY '\n' STARTING BY ''
文档的笔记,用CSV文件处理时为:
LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
哪个处理由“”封闭的线分离由\ r逗号分隔值的一个例子, \ n
要使用此功能导入文件,请确保您的语句与上传文件的CSV格式相匹配,并且可以通过此方式导入。
谢谢,我会看看那个:-) – user1148760 2012-01-14 01:00:39