我使用以下代码遍历文件夹中的文件并将数据加载到MYSQL表中。我无法完成这项工作。有没有更好的解决方案?
if ($handle = opendir('C:\Documents and Settings\Desktop\CSV Files')) {
while(false !== ($entry = readdir($handle)))
{
mysql_query("LOAD DATA LOCAL INFILE %handle
INTO TABLE main_table
FIELDS
TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES")
}
}
答案 0 :(得分:1)
你的代码有很多错误,很难选择从哪里开始......
%handle
不是PHP变量,而且它是错误的变量。$entry
只是文件名,而不是完整路径。mysql_query()
来电结束时没有分号。"
,两者都没有被转义。echo
查询而不是运行它以确保它在没有工作的情况下正确形成。mysql_*
函数已被弃用,您应该使用PDO或MySQLi。所以这可能适用于:
<?php
error_reporting(E_ALL);
define('DEBUG', true);
$basedir = 'C:\\Documents and Settings\\Desktop\\CSV Files\\';
if ($handle = opendir($basedir)) {
while(false !== ($entry = readdir($handle))) {
$query = "LOAD DATA LOCAL INFILE $basedir$entry
INTO TABLE main_table
FIELDS
TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
ESCAPED BY '\\'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES");
if(DEBUG) { echo $query . "\n"; }
if(!mysql_query($query)) {
die('Query failed: ' . mysql_error());
}
}
} else {
echo "Could not open $basedir";
}