Hab' hier 'ne wunderschöne Möglichkeit, um Daten aus einer csv-Datei auszulesen und in eine vorher definierte MySQL-Tabelle hineinzuschreiben.
Mein Problem ist, daß die einzulesende csv-Datei auf dem Server liegen muß. Infolgedessen muß ich die Datei immer erst auf den Server hochladen.
Wie müsste ich das nachfolgende Script modifizieren, damit ich eine lokal gespeicherte Datei (auf meinem Rechner) einlesen kann. Früher hab' ich das Ganze immer über PHPMyAdmin (...load data local infile...) gemacht. Mein Provider hat diese Option aber seit kurzem deaktiviert. Oder gibt es vielleicht noch 'ne bessere Möglichkeit, um lokale .txt oder .csv - Dateien in eine MySQL-Tabelle über's Netz einzuspielen. Wär' euch dankbar für 'ne Lösung !
<?php
//THE NAME OF YOUR MYSQL DATABASE
$mydatabase = "xxx";
//THE NAME OF YOUR MYSQL TABLE
$mytable = "xxx";
//YOUR USERNAME TO ACCESS MYSQL
$user = "xxx";
//YOUR PASSWORD TO ACCESS MYSQL
$pass ="xxx";
//THE ADDRESS OF YOUR MYSQL SERVER
$address ="xxx";
//CSV/TXT FILE THAT YOU WISH TO CONVERT
$CSV = "niv_dritt.csv";
//TYPES OF FIELD SEPERATORS
//COMMA ,
//TAB \t
//COLON :
//SEMI-COLON ;
//YOUR CSV/TXT FILE SEPERATOR
$seperator = ",";
$noconnection = "Error: Could not connect to database. Please try again later!";
$notentered = "You have not entered all the required details.<br>"
."Please go back and try again.";
@ $db = mysql_pconnect("$address", "$user", "$pass");
if (!$db)
{
echo "$noconnection<p>";
}
mysql_select_db($mydatabase);
$openit = file($CSV);
$counter = count($openit);
$filearray = file("$CSV");
echo "<center><font face=arial size=3>Daten einspielen ...</font></center><p>";
for($i=0; $i<$counter; $i++)
{
$item = explode("$seperator", $filearray[$i]);
include("query.inc");
$result = mysql_query($query);
if ($result)
{
echo $effected_item." <font color=blue>has been added</font><br>\n";
}
else
{
echo $effected_item." <font color=red>NOT ADDED</font><br>\n";
}
}
?>
Mein Problem ist, daß die einzulesende csv-Datei auf dem Server liegen muß. Infolgedessen muß ich die Datei immer erst auf den Server hochladen.
Wie müsste ich das nachfolgende Script modifizieren, damit ich eine lokal gespeicherte Datei (auf meinem Rechner) einlesen kann. Früher hab' ich das Ganze immer über PHPMyAdmin (...load data local infile...) gemacht. Mein Provider hat diese Option aber seit kurzem deaktiviert. Oder gibt es vielleicht noch 'ne bessere Möglichkeit, um lokale .txt oder .csv - Dateien in eine MySQL-Tabelle über's Netz einzuspielen. Wär' euch dankbar für 'ne Lösung !
<?php
//THE NAME OF YOUR MYSQL DATABASE
$mydatabase = "xxx";
//THE NAME OF YOUR MYSQL TABLE
$mytable = "xxx";
//YOUR USERNAME TO ACCESS MYSQL
$user = "xxx";
//YOUR PASSWORD TO ACCESS MYSQL
$pass ="xxx";
//THE ADDRESS OF YOUR MYSQL SERVER
$address ="xxx";
//CSV/TXT FILE THAT YOU WISH TO CONVERT
$CSV = "niv_dritt.csv";
//TYPES OF FIELD SEPERATORS
//COMMA ,
//TAB \t
//COLON :
//SEMI-COLON ;
//YOUR CSV/TXT FILE SEPERATOR
$seperator = ",";
$noconnection = "Error: Could not connect to database. Please try again later!";
$notentered = "You have not entered all the required details.<br>"
."Please go back and try again.";
@ $db = mysql_pconnect("$address", "$user", "$pass");
if (!$db)
{
echo "$noconnection<p>";
}
mysql_select_db($mydatabase);
$openit = file($CSV);
$counter = count($openit);
$filearray = file("$CSV");
echo "<center><font face=arial size=3>Daten einspielen ...</font></center><p>";
for($i=0; $i<$counter; $i++)
{
$item = explode("$seperator", $filearray[$i]);
include("query.inc");
$result = mysql_query($query);
if ($result)
{
echo $effected_item." <font color=blue>has been added</font><br>\n";
}
else
{
echo $effected_item." <font color=red>NOT ADDED</font><br>\n";
}
}
?>
Kommentar