2016-09-14 2 views
2

Я попытался импортировать файл csv с другого сервера с помощью LOAD DATA LOCAL INFILE, но он дает мне ошибку The user update failed: Can't find file, даже файл существует в указанном пути. Я также попытался LOAD DATA INFILE ноИмпорт CSV-файла в базу данных Mysql в PHP

Есть ли какой-либо другой способ, чтобы импортировать файл CSV непосредственно в пути к файлу (без использования какого-либо кнопка отправки) в базе данных MySQL и удалить текущие данные в таблице Dbase, если есть новая Файл csv загружен?

EDIT: Я попробовал и этот скрипт, чтобы импортировать файл CSV без кнопки, но данные CSV файл не импортировать

PHP (второй код):

$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; 
+0

@ e4c5, я не пытаюсь экспортировать данные, но импортировать его в базу данных MySQL. Я не это дубликат – User014019

ответ

0

Об этом было задано и ответили ранее. Используйте google лучше: Mysql permission errors with 'load data'

Необходимо предоставить права доступа к файлу для пользователя mysql.

+0

Я уже предоставляю разрешение в mysql, но такая же ошибка – User014019

+0

Должен ли он быть полным путем к файлу? – systematical

+0

Да, я помещаю полный путь к файлу. во всяком случае, удаленный сервер/ftp, где находится файл, не имеет mysql/phpmyadmin. И есть другой способ импортировать файл csv без нажатия кнопки? – User014019

0

вы также можете попробовать использовать

$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

+0

Я уже пробовал это, но данные все еще не импортируются – User014019

Смежные вопросы