csv to mysql - werte eingeschlossen in ' ' werden in Sql Table in Hochkomma gesetzt !
geschrieben von: goedicke (IP bekannt)
Datum: 21.02.07 21:49
Hilfe - habe csv to sql file von Bekannten erhalten,leider funkt es nicht wie ich es brauche und deshalb bitte ich als NON-PHP'ler um Hilfe:
CSV file wird aus FOXPRO generiert, varCharFelder sind in einfachen Hochkommaten eingeschlossen, Num Felder sind nicht in Hochkomma eingeschlossen.
CSV File Format kann nicht geändert werden, da ich den Source Code der Foxpro Anwendung nicht habe.
Nun werden alle in Hochkomma eingeschlossen Felder mit Hochkomma in meine SQL-Datenbank übergeben der Inhalt sieht dann so aus:
'BLECH' das stört ungemein bei der Ausgabe und auch bei Weiterverwendung in a nderen Scripts.
Frage: Wo kann ich bei dem Script angeben wie die Werte eingeschlossen sind, Sepa ; ist korrekt angegeben, und sollte das mit explode (csv.... nicht funktionieren - wer kann mit beim Erstellen eines Scriptes helfen. Ich brüte schon ein paar Tage und komme nicht voran !
Gudrun
<?php
// Database server host
$sql_db['host'] = "localhost";
// Database name
$sql_db['name'] = "usrdb_www0377";
// Database user name
$sql_db['user'] = "www0377";
// Database password
$sql_db['pass'] = "l2vzal2";
// Database table name
$sql_db['tble'] = "maschine";
// Absolute path or URL (e.g. http://...) to the CSV file
$csv_file['path'] = "http://www.hmaba.de/bexport/maschine.csv";
// Value Separator used in CSV file
$csv_file['sepa'] = ";";
// ======================================================================
// Connect to MySQL database
// ======================================================================
$connect = @mysql_connect($sql_db['host'], $sql_db['user'], $sql_db['pass'])
or die(mysql_error());
$db = @mysql_select_db($sql_db['name'], $connect)
or die(mysql_error());
// ======================================================================
// Create the SQL Insert Query
// ======================================================================
$file_contents_line = @file($csv_file['path'])
or die ("CSV file not found.");
foreach ($file_contents_line as $key => $val)
{
// Skip empty lines
if (empty($val)) continue;
$inserts .= (($key >= 1) ? ", " : "")."('";
$values = explode($csv_file['sepa'], $val);
for ($j = 0; $j < count($values); $j++)
{
$inserts .= addslashes(utf8_decode($values[$j])).(($j != (count($values) - 1)) ? "', '" : "");
}
$inserts .= "')";
}
// ======================================================================
// Store all data into our database
// ======================================================================
$sql = "REPLACE ".$sql_db['tble']." VALUES ".$inserts;
$res = mysql_query($sql)
or die(mysql_error());
echo "Convert successful.\n";
?>
<a href="http://www.hmba.de">script by gudrungoedicke</a>
geschrieben von: goedicke (IP bekannt)
Datum: 21.02.07 21:49
Hilfe - habe csv to sql file von Bekannten erhalten,leider funkt es nicht wie ich es brauche und deshalb bitte ich als NON-PHP'ler um Hilfe:
CSV file wird aus FOXPRO generiert, varCharFelder sind in einfachen Hochkommaten eingeschlossen, Num Felder sind nicht in Hochkomma eingeschlossen.
CSV File Format kann nicht geändert werden, da ich den Source Code der Foxpro Anwendung nicht habe.
Nun werden alle in Hochkomma eingeschlossen Felder mit Hochkomma in meine SQL-Datenbank übergeben der Inhalt sieht dann so aus:
'BLECH' das stört ungemein bei der Ausgabe und auch bei Weiterverwendung in a nderen Scripts.
Frage: Wo kann ich bei dem Script angeben wie die Werte eingeschlossen sind, Sepa ; ist korrekt angegeben, und sollte das mit explode (csv.... nicht funktionieren - wer kann mit beim Erstellen eines Scriptes helfen. Ich brüte schon ein paar Tage und komme nicht voran !
Gudrun
<?php
// Database server host
$sql_db['host'] = "localhost";
// Database name
$sql_db['name'] = "usrdb_www0377";
// Database user name
$sql_db['user'] = "www0377";
// Database password
$sql_db['pass'] = "l2vzal2";
// Database table name
$sql_db['tble'] = "maschine";
// Absolute path or URL (e.g. http://...) to the CSV file
$csv_file['path'] = "http://www.hmaba.de/bexport/maschine.csv";
// Value Separator used in CSV file
$csv_file['sepa'] = ";";
// ======================================================================
// Connect to MySQL database
// ======================================================================
$connect = @mysql_connect($sql_db['host'], $sql_db['user'], $sql_db['pass'])
or die(mysql_error());
$db = @mysql_select_db($sql_db['name'], $connect)
or die(mysql_error());
// ======================================================================
// Create the SQL Insert Query
// ======================================================================
$file_contents_line = @file($csv_file['path'])
or die ("CSV file not found.");
foreach ($file_contents_line as $key => $val)
{
// Skip empty lines
if (empty($val)) continue;
$inserts .= (($key >= 1) ? ", " : "")."('";
$values = explode($csv_file['sepa'], $val);
for ($j = 0; $j < count($values); $j++)
{
$inserts .= addslashes(utf8_decode($values[$j])).(($j != (count($values) - 1)) ? "', '" : "");
}
$inserts .= "')";
}
// ======================================================================
// Store all data into our database
// ======================================================================
$sql = "REPLACE ".$sql_db['tble']." VALUES ".$inserts;
$res = mysql_query($sql)
or die(mysql_error());
echo "Convert successful.\n";
?>
<a href="http://www.hmba.de">script by gudrungoedicke</a>
Kommentar