CSV Import in MySQL Tabellen

  • Themenstarter Themenstarter fercules
  • Beginndatum Beginndatum
F

fercules

Wie schwer es wohl ist CSV Dateien in eine bestehende MySQL Datenbank zu importieren, also einzulesen? Hat jemand Erfahrungswerte?

Viele Grüße
Fercules
 
@ Claas Meckelnburg

Das ist eine Daten datei, ähnlich einer TXT datei.

@ fercules

Nein leider nicht aber mit .txt Dateien wenn es Dir weiter hilft

Gruß Mirko
 
Ich möchte mal behaupten, dass es völlig egal ist, ob die Datei *.csv oder *.txt heisst. Es handelt sich nämlich in beiden Fällen um Textdateien (zumindest sollte es das), wobei sich *.csv zum Beispiel aus Excel erzeugen lässt.

Was ich eigentlich sagen will, wichtig ist doch nur, was in den Dateien drin steht! Und zum importieren müssen die Datensätze halt zeilenweise drinstehen, wobei die Werte der einzelnen Spalten mit einem Trennzeichen getrennt werden.

Schwer ist das Ganze gar nicht, wenn mans richtig macht (so wie eigentlich immer und überall). Und phpmyadmin hilft sogar mit!
 
Also erst einmal Begriffserklärung: CSV heißt "Comma Serperated Values" was soviel heißt wie durch Kommas getrennte Daten :)

Daten werden duch sogenannte Delimiter getrennt. In den meisten fällen ist dies ein ',' oder ein ';'.

Nun zum Import in eine MySQL das ist sehr einfach WENN deine CSV Datei konsistent ist.... ansonsten ist es hmm naja eine frage ob es dann noch einen sinn macht.

also erst mal eine funktion die ich grad für ein eigenes Projekt auch benutze um die CSV in ein 2 dimensionales Array zu verfrachten...:

PHP:
function ReadCSV($File_name, $Delimiter = ';'){
	$Output    = array(0 => array(0));
	$i		 = 0;
	$FileArray = file($File_name);
	
	// Zeile für Zeile Einlesen und durch Explode Werte in Array schreiben
	foreach($FileArray as $val){ $Output[$i++] = explode($Delimiter, $val);	}
	
	return $Output;
}

dannach hast du ein 2 dimensionales array welches du einfach durchgehen kannst und zeile für zeile in die MySql schreiben.

PHP:
$Data = ReadCSV('file.txt',',');

foreach($Data as $key => $val){
	mysql_query("INSERT INTO `table` SET `field1` = '$val[0]', `field2` = '$val[1]';");
}

Eventuelle Fehler nicht übel nehmen ich wollte nur die vorgehdsweise erklären.
 
Zuletzt bearbeitet:
und was ist wenn in deiner CSV datei ein , oder ; exestiert?
also innerhalb eines Textes? *fg* :)
soweit wohl noch nicht gedacht oder? *g*
 
Dann hast du deinen Delimiter sehr ungünstig gewählt und die CSV Datei ist unbrauchbar....

Weil man ja nicht klar trennen kann zwischen den Daten. Wenn man vor hat ein ; in der datei zu verwenden kann man ja auch andere Zeichen nehme. etwa ein <> oder sonst irgend eins.
 
Wenn Excel Werte in eine CSV-Datei speichert, die das Trennzeichen beinhalten, so wird der Komplette Datensatz in doppelte Anführungszeichen eingefasst:
Code:
a;b;c;"d;";e;f;g;h;";i"

snuu
 
Zurück