我使用以下代码遍历文件夹中的文件,并将数据加载到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")
}
}
你的代码有这么多错误,很难选择从哪里开始…
- 目录路径没有转义。
- 你没有任何东西告诉你目录不能打开。
-
%handle
不是PHP变量,而且是错误的变量。 -
$entry
只是文件名,不是完整路径。 -
mysql_query()
呼叫结束时没有分号。 - 您的'enclose'和'escape'字符都是
"
,它们都没有被转义。 -
echo
查询,而不是运行它,以确保它是正确形成的,如果它不工作。 - 您从未真正检查查询是否成功。
- 打开错误报告,因为你有一些明显的解析错误,应该使这个脚本在运行之前失败。
- 和一直流行的:
mysql_*
函数已被弃用,您应该使用PDO或MySQLi。
所以这应该行得通a:
<?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";
}