尝试使用'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>";
答案 0 :(得分:2)
请不要将mysql_*
函数用于新代码。它们已不再维护,社区已开始deprecation process。请参阅red box?相反,您应该了解prepared statements并使用PDO或MySQLi。如果您无法决定,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。此外,还会发出警告。