Textrenner und DB leeren beim CSV-Import funktioniert nicht

julia29

Erfahrenes Mitglied
Hallo,
ich möchte eine CSV-Datei von einer externen Quelle in MySQL importieren. Dies klappt auch ganz gut, nur das vorherige Leeren der DB und das Entfernen der Texttrenner " bereiten mir Probleme.

Bevor ich die CSV-Datei einlese wollte ich gern per Script die entsprechende MySQL-Tabelle leeren.
Wird auch gemacht, nur kann ich einfach nicht herausfinden warum dann nur noch der letzte Datensatz aus der CSV-Datei abgespeichert wird.

Das Löschen der Texttrenner
PHP:
$my_array[1] = str_replace('"', '\"', $my_array[1]);
habe ich zwar mit den ersten Feldern versucht, klappt aber nicht. In der MySQL stehen Sie weiterhin so, wie nachfolgendes Beispiel, mit Anführungszeichen im DB-Feld
"dies ist mein DB-Text".

Hier der php-code
PHP:
<?php

$fp = @fopen("http://www.meine-seite.de/test/csv15a.csv", "r") or die ("Kann Datei nicht lesen.");

while ($line = fgets($fp, 1024)) {
$my_array = explode('|',$line,30);


$Link=mysql_connect("localhost","xxx","xxx") or die (mysql_error());
mysql_select_db("xxmeine_dbxx");
$db = "xxmeine_dbxx";
$table = "xxmeine_tabellexx";

// Hier das vorherige Leeren in der MySQL
mysql_select_db($db,$Link) or die (mysql_error());
$query = "TRUNCATE `xxmeine_tabellexx`"; 
$ergebnis=mysql_query($query) or die (mysql_error()); 


// Hier mein Versuch die Texttrenner zu entfernen
$my_array[4] = str_replace('"', '\"', $my_array[4]);
$my_array[3] = str_replace('"', '\"', $my_array[3]);
$my_array[2] = str_replace('"', '\"', $my_array[2]);
$my_array[1] = str_replace('"', '\"', $my_array[1]);
$my_array[0] = str_replace('"', '\"', $my_array[0]);


$sql = "INSERT INTO xxmeine_tabellexx SET    f20='$my_array[20]',
											f19='$my_array[19]',
											f18='$my_array[18]',
											f17='$my_array[17]',
											f16='$my_array[16]',
											f15='$my_array[15]',
											f14='$my_array[14]',
											f13='$my_array[13]',
											f12='$my_array[12]',
											f11='$my_array[11]',
											f10='$my_array[10]',
											f09='$my_array[9]',
											f08='$my_array[8]',
											f07='$my_array[7]',
											f06='$my_array[6]',
											f05='$my_array[5]',
                                            f04='$my_array[4]',
                                            f03='$my_array[3]',
                                            f02='$my_array[2]',
                                            f01='$my_array[1]',
											f0='$my_array[0]';";

if( mysql_query($sql)){
echo "Eingetragen! ";
echo $my_array[4]."<br>";
}

}
fclose($fp);
?>


Was mache ich falsch?
Vielen Dank für die Hilfe
mfg
Julia
 
Hi,
mal sehen ob ich das richtig verstehe:

Du möchtest die Anführungszeichen (") aus der CSV-Datei entfernen bevor die Daten in die Datenbank geschrieben werden?
 
nein, nicht so richtig, denn nun schreibt er im 1.DS im 1.Feld lediglich (Array) rein.

Eigentlich verstehe ich nur nicht, warum mein str_replace

PHP:
$my_array[4] = str_replace('"', '\"', $my_array[4]);
$my_array[3] = str_replace('"', '\"', $my_array[3]);
$my_array[2] = str_replace('"', '\"', $my_array[2]);
$my_array[1] = str_replace('"', '\"', $my_array[1]);
$my_array[0] = str_replace('"', '\"', $my_array[0]);

ignoriert wird, denn dann sollte es ja eigentlich klappen, hat es bisher zumindest immer.
 
Zurück