2017-02-09 1 views
1

Ich arbeite in meiner Website (PHP-Sprache) und ich möchte meinen Tisch jeden Tag mit CSV-Datei aktualisieren, so habe ich dies schreibe:aktualisieren MySQL von CSV jeden Tag Datei (Ladedaten nicht in gespeicherten Prozeduren erlaubt)

LOAD DATA LOCAL INFILE 'C:/wamp/www/mywebsite/data/m5.csv' 
INTO TABLE m4 
FIELDS TERMINATED BY "," 
LINES TERMINATED BY "\n" 
IGNORE 1 LINES 
(col1,col2,col3,col4,col5) 

Und ich habe ein Ereignis in phpMyAdmin erstellen, aber wenn ich auf gültige meine Veranstaltung whant, ich habe diesen Fehler:

# 1314 Ladedaten in gespeicherten Prozeduren nicht erlaubt

Wie kann ich tun um meine Tabelle jeden Tag mit CSV fi zu aktualisieren le?

Danke

+0

Ihre CSV enthält alle Daten Basisdatensätze oder nur die aktualisierten Datensätze? –

+0

Jeden Tag truncate ich meine Tabelle und ich möchte neue Informationen in die mit einer CSV-Datei einfügen – Rocstar

+0

Sind Sie daran interessiert, dies mit einem PHP-Skript und nicht mit PHPMyAdmin-Ereignis zu tun? –

Antwort

0

In Bezug auf diese Frage: Importing CSV data using PHP/MySQL

Die Lösung für Ihr Problem dieses

<?php 
$query = <<<eof 
    LOAD DATA INFILE 'C:/wamp/www/mywebsite/data/m5.csv' 
    INTO TABLE m4 
    FIELDS TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
    IGNORE 1 LINES 
    (col1,col2,col3,col4,col5) 
eof; 

$db->query($query); 
?> 

jedoch sein könnte, wenn Sie in einem PHP-Skript interessiert sind, die das gleiche tut Ding könnte dies versuchen

<?php 
$dbhost = ""; 
$dbname = ""; 
$dbusername = ""; 
$dbpassword = ""; 


$dbtable = "m4"; 
$fieldseparator = ","; 
$lineseparator = "\n"; 
$csvfile = "C:/wamp/www/mywebsite/data/m5.csv"; 

/********************************/ 
/* Set this to 1 if your table have an auto_increment field. 
/********************************/ 
$addauto = 0; 
/********************************/ 
/* Would you like to save the mysqli queries in a file? If yes set $save to 1. 
/* Permission on the file should be set to 777. Either upload a sample file through ftp and 
/* change the permissions, or execute at the prompt: touch output.sql && chmod 777 output.sql 
/********************************/ 
$save = 0; 
$outputfile = ""; 


if(!file_exists($csvfile)) { 
    echo "File not found. Make sure you specified the correct path.\n"; 
    exit; 
} 

$file = fopen($csvfile,"r"); 

if(!$file) { 
    echo "Error opening data file.\n"; 
    exit; 
} 

$size = filesize($csvfile); 

if(!$size) { 
    echo "File is empty.\n"; 
    exit; 
} 

$csvcontent = fread($file,$size); 

fclose($file); 

$conn = mysqli_connect($dbhost, $dbusername, $dbpassword, $dbname) or die('Could not connect'); 

mysqli_set_charset($conn,"utf8"); 

$sqldel="DELETE FROM ".$dbtable; 

$conn->query($sqldel); 
$lines = 0; 
$queries = ""; 
$linearray = array(); 

foreach(explode($lineseparator,$csvcontent) as $line) { 

    $lines++; 

    $line = trim($line," \t"); 

    $line = str_replace("\r","",$line); 

    /************************************ 
    This line escapes the special character. remove it if entries are already escaped in the csv file 
    ************************************/ 
    $line = str_replace("'","\'",$line); 
    /*************************************/ 

    $linearray = explode($fieldseparator,$line); 

    $linemysql = implode("','",$linearray); 

    $linemysql = utf8_encode($linemysql); 

    if($addauto) 
     $query = "INSERT INTO $dbtable VALUES('','$linemysql');"; 
    else 
     $query = "INSERT INTO $dbtable VALUES('$linemysql');"; 

    $queries .= $query . "\n"; 

    $res_i=$conn->query($query); 
} 


if($save) { 

    if(!is_writable($outputfile)) { 
     echo "File is not writable, check permissions.\n"; 
    } 

    else { 
     $file2 = fopen($outputfile,"w"); 

     if(!$file2) { 
      echo "Error writing to the output file.\n"; 
     } 
     else { 
      fwrite($file2,$queries); 
      fclose($file2); 
     } 
    } 

} 
?> 
Verwandte Themen