上传csv并将其导入mysql数据库

时间:2012-01-14 00:34:40

标签: php mysql csv uploader

我正在编写以下脚本,将csv文件导入mysql数据库。 用户必须先登录,并且他们的上传安全权限由另一个文件检查,如果评估结果为true,则文件可以通过文件up-loader上传,只允许上传csv,然后是以下部分导入文件。

我是否在下面使用了正确的代码?,如果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());
?>

2 个答案:

答案 0 :(得分:2)

除非你100%依赖用户而且似乎你不是, 不要盲目导入上传的文件,但首先要检查它是否正确。

为此,您需要打开并阅读该文件,例如使用fgetcsv并逐行检查数据一致性。


你可以在网上找到很多例子。

以下是一些:

答案 1 :(得分:0)

可以通过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格式匹配,并且您可以通过这种方式导入。