LOAD DATA INFILE - mysql / php脚本无法正常运行

时间:2012-07-16 09:42:28

标签: php mysql database load-data-infile

尝试使用'LOAD DATA INFILE'从CSV(10k记录)填充数据库表,但此刻它什么都不做。

没有错误,没有输入数据,我不知道它有什么问题,所以感谢任何帮助!

My code (-CSS and DBconnect):


if (isset($_POST['submit'])) {
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
    echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded
   successfully." . "</h1>";
}

$temp_file = $_FILES['filename']['tmp_name']; 
$origin_file = $_FILES['filename']['name'];
$target_file = 'uploads/'.$origin_file;
move_uploaded_file($temp_file, $target_file);
$file_name = $target_file;

$query = <<<eof
LOAD DATA LOCAL INFILE '$file_name'
 INTO TABLE importing
 FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
 LINES TERMINATED BY '\n'
(text,number)
IGNORE 1 LINES
eof;

mysql_query($query);


print "Import done";

mysql_close(); 
//view upload form
}else {

print "Upload new csv by browsing to file and clicking on Upload<br />\n";

print "<form enctype='multipart/form-data' action='upload.php' method='post'>";

print "File name to import:<br />\n";

print "<input size='50' type='file' name='filename'><br />\n";

print "<input type='submit' name='submit' value='Upload'></form>";

1 个答案:

答案 0 :(得分:2)

注意

请不要将mysql_*函数用于新代码。它们已不再维护,社区已开始deprecation process。请参阅red box?相反,您应该了解prepared statements并使用PDOMySQLi。如果您无法决定,this article将有助于选择。如果您想学习,here is good PDO tutorial

要查看代码输出发生的更改错误

mysql_query($query);

$result = mysql_query($query);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

然后mysql_error()将输出错误而不是一无所有......

正如@Lèsemajesté指出 - move_uploaded_file()也会返回boolean,您应该检查true

  

成功时返回TRUE。

     

如果filename不是有效的上传文件,则不会执行任何操作,move_uploaded_file()将返回FALSE。

     

如果filename是有效的上传文件,但由于某种原因无法移动,则不会执行任何操作,move_uploaded_file()将返回FALSE。此外,还会发出警告。

Full docs for move_uploaded_file() here