在PHP中将CSV文件导入到Mysql数据库中
我试图使用LOAD DATA LOCAL INFILE
从另一个服务器导入csv文件,但它给了我一个错误The user update failed: Can't find file
,即使文件存在于给定的路径中。我也试过LOAD DATA INFILE
但在PHP中将CSV文件导入到Mysql数据库中
是否有任何其他方法直接导入CSV文件的文件路径(不使用任何提交按钮),dBASE表在MySQL数据库中,并删除当前数据,如果有一个新的csv文件上传?
编辑:我也试过这个PHP脚本,导入CSV文件无任何按键,但是csv文件数据无法导入
PHP(第2码):
$mysqli = new mysqli("localhost", "user", "password", "dbasename");
$file = "/var/www/html/files/filename.csv";
$handle = fopen($file,'r');
while (($data = fgetcsv($handle, 10000, ",")) !== FALSE){
$num = count($data);
for ($c=0; $c < $num; $c++){
$col[$c] = $data[$c];
}
$col1 = $data[0];
$col2 = $data[1];
$col3 = $data[2];
$col4 = $data[3];
$col5 = $data[4];
// SQL Query to insert data into DataBase
$query = "INSERT INTO dbname.tablename(col1,col2,col3,col4,col5) VALUES('".$col1."','".$col2."','".$col3."','".$col4."','".$col5."')";
$mysqli->query($query);
}
fclose($handle);
这里的的PHP:
$sql = "LOAD DATA LOCAL INFILE 'filename.csv'
INTO TABLE dbname.tablename
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;";
$con=mysqli_connect("localhost","user","password","db");
// Check connection
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
};
$result = mysqli_query($con, $sql);
if (mysqli_affected_rows($con) == 1){
$message = "The data was successfully added!";
} else {
$message = "The user update failed: ";
$message .= mysqli_error($con);
};
echo $message;
这已被问及之前回答。使用google更好: Mysql permission errors with 'load data'
您需要授予文件权限给mysql用户。
我已经在mysql中授予权限,但是同样的错误 – User014019
它是否必须是文件的完整路径? – systematical
是的,我把文件的完整路径。无论如何,文件所在的远程服务器/ ftp没有mysql/phpmyadmin。还有其他方法可以导入一个csv文件,而无需点击任何按钮? – User014019
你也可以尝试使用
$con=mysqli_connect("localhost","user","password","db");
$file = fopen("filename.csv","r");
while ($data = fgetcsv ($file)){
print_r($data);
$sql = 'insert into ...'
$result = mysqli_query($con, $sql);
}
导入CSV文件
我已经试过,但数据仍然没有导入 – User014019
@ e4c5,我并不想导出数据,但将其导入到MySQL数据库。我不这是重复的 – User014019