Fruitgum
Erfahrenes Mitglied
Hallo,
das ist meine PHP die eine CSV in meine MySql-Datenbank importiert.
Dann habe ich bemerkt das es Unterschiede in der Fomatierung der CSV-Datei gibt.
Die 1. Die wo jeder Eintrag eine Zeile hat und die Datensätze oder Attribute durch ein Komma getrennt sind.
Und die 2. Wo alle Daten in einer Zeile stehen, also ohne umbruch und wo die Attribute durch " und , oder ; getrennt sind.
Beispiel:
Ist das egal für mein PHP code?
Oder soll die CSV lieber in Zeilen formatiert sein?
Ich habe die PHP-Datei mir der 2. CSV Formatierung ausprobiert und das sagt er mir:
Menge der Daten entspricht nicht der Anzahl der Spaltenanzahl
Warum?
Liegt es an dem Inhalt oder wird versuch einige Attribute auf ein Feld zu schreiben was in der Tabelle gar nicht existiert?
Ich möchte das die Daten in einer Tabelle ersetzt werden, also wenn ein Eintrag mit der ID 46 existiert und in der CSV hat ein Eintrag die ID 46, so soll er die Spalte ersetzen...
mmmhhh, mir brummt der schädel...
Grüße
das ist meine PHP die eine CSV in meine MySql-Datenbank importiert.
PHP:
<?php
$id = "xxxxxxx";
$pw = "xxxxxxx";
$host = "xxxxxxx";
$database = "xxxxxxx";
$table = "xxxxxxx";
$datei = "xxxxxxx";
echo "<html><body>";
if(!$table || !$datei) die("Die Quelle oder das Ziel sind unbekannt");
$conn_id = mysql_pconnect($host,$id,$pw) or die("Verbindung konnte nicht hergestellt werden");
mysql_select_db($database) or die("Die Datenbank konnte nicht gefunden werden");
$result = mysql_list_fields($database,$table);
for($i=0;$i<mysql_num_fields($result);$i++) {
$spalten .= mysql_field_name($result,$i).",";
}
$anzahl = mysql_num_fields($result);
$spalten = trim(substr($spalten,0,-1));
// leert die Tabelle
//mysql_query("DELETE FROM $table") or die(mysql_error());
$fp = fopen($datei,"r"); unset($i);
while(!feof($fp)) {
$zeile = fgets($fp,1024);
if(!$start) { if(count(explode(",",$zeile))!=$anzahl)
die ("Menge der Daten entspricht nicht der Anzahl der Spaltenanzahl"); }
echo $i++."<br>";
$zeile = "'".str_replace(",","','",strstr($zeile,","))."'";
mysql_query("INSERT INTO $table ($spalten) VALUES ($zeile)");
$start=true;
}
fclose($fp);
echo "Import erfolgreich abgeschlossen.<p></p>";
echo "</body></html>";
?>
Dann habe ich bemerkt das es Unterschiede in der Fomatierung der CSV-Datei gibt.
Die 1. Die wo jeder Eintrag eine Zeile hat und die Datensätze oder Attribute durch ein Komma getrennt sind.
Und die 2. Wo alle Daten in einer Zeile stehen, also ohne umbruch und wo die Attribute durch " und , oder ; getrennt sind.
Beispiel:
PHP:
,,,,,,""0"",""0"",""0"",,""0"",""0"",""0"",""0"",""0"",""255717"",""UTC"",,,,""0"",""0"",""0"",""0"",,""0"","
"13,""437"",""1192364574"",""0"",""0"",""1"",""0"",""0"",""0"",""20080613"",""20080613"",""64800"",""86340"",""0"",""No 2 xxxxxxxxxxxxxt"",""1"",""1"",""Bach familiä";"r"",""0"",""0"",,""4"",""0"",,""<br />Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua<br /><br /><br /><br />Lorio<br /
Ist das egal für mein PHP code?
Oder soll die CSV lieber in Zeilen formatiert sein?
Ich habe die PHP-Datei mir der 2. CSV Formatierung ausprobiert und das sagt er mir:
Menge der Daten entspricht nicht der Anzahl der Spaltenanzahl
Warum?
Liegt es an dem Inhalt oder wird versuch einige Attribute auf ein Feld zu schreiben was in der Tabelle gar nicht existiert?
Ich möchte das die Daten in einer Tabelle ersetzt werden, also wenn ein Eintrag mit der ID 46 existiert und in der CSV hat ein Eintrag die ID 46, so soll er die Spalte ersetzen...
mmmhhh, mir brummt der schädel...
Grüße