kostenloser Webspace werbefrei: lima-city


Import CSV in MySQL bricht ab

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    mein-wunschname

    mein-wunschname hat kostenlosen Webspace.

    Ich habe eine CSV-Datei, die etwas so aufgebaut ist:

    feldinhalt feld1;feldinhalt feld2;feldinhalt feld3
    feldinhalt feld1;feldinhalt feld2;"feldinhalt" feld3


    Es sind natürlich noch ein paar Zeilen mehr. Bei manchen Zeilen ist ein Teil des Inhalts eines Feldes von Hochkomma umschlossen. Beim ersten Auftreten einer derartigen Zeile bricht der Import mit phpMyAdmin ab mit der Meldung
    Ungültiges Format in Zeile 6491


    Ich verwende die folgenden Importeinstellungen:

    Spalten getrennt mit: ;
    Spalten eingeschlossen von: "
    Spalten escaped mit: "


    Wie kann ich meine CSV-Datei vollständig importieren?



    Beitrag zuletzt geändert: 16.6.2014 8:34:38 von mein-wunschname
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hi,
    bisher war ich der Meinung csv bedeutet die nur die Feldinhalte werden übergeben,
    die Datenbankstruktur ist gleich der Reihenfolge der Einträge in der csv Datei,
    der neue Datensatz wird mit dem zeilenumbruch gekennzeicht.....
    also
    Person 1 hat Wochentags 8 Stunden
    Person 2 hat Wochentags und Sonnabend 6 Stunden
    Person 3 hat Montag, Dienstag und Sonnabend 8 Stunden und Mittwoch Frei

    somit als csv:
    Person;Montag;Dienstag;Mittwoch;Donnerstag;Freitag;Sonnabend;Sonntag
    1;8;8;8;8;8;;;
    2;6;6;6;6;6;6;;
    3;8;8;"Frei";;;8;;

    das Feld ist also nicht Bestandteil des csv's oder eventuell einmal in der ersten Zeile.
    Ich hoffe ich habe Dich richtig verstanden.
    gruß
  4. Autor dieses Themas

    mein-wunschname

    mein-wunschname hat kostenlosen Webspace.

    Mein Beispiel war wohl nicht so ganz deutlich, ein besseres
    blabla;blibli;blublu
    blibli;blublublabla;"blibli" blublu
    blau;grau;blau


    es sind natürlich nur die Feldinhalte drin.

    Noch einmal das Problem:
    Der Import bricht in der Zeile ab, in der ein Teil des Inhaltes in "" steht.


    Beitrag zuletzt geändert: 19.6.2014 15:55:45 von mein-wunschname
  5. mmhh ja dachte ich mir, war aber nicht sicher.

    dann ist der link http://forum.de.selfhtml.org/archiv/2011/8/t206588/ deine Problembeschreibung,
    Lösung dort war allerdings die Anführungszeichen "händisch zu entfernen" (oder mit php-script).

    Persönlich nutze ich gerne jeweils angepaßte "fgetcsv"-scripte, wahrscheinlich um genau diese Problem dann mühsam auszuklammern (ich sag ja nicht das sei schön so)

    Wie Du selber gemerkt hast machen Deine Einstellungen aus "blabla" ein ""blablabla"", was zum Fehler führt.

    Nutzen von anderen Zeichen (also nicht ") als Enclosure und Delimeter usw. helfen eventuell?

    Ich probiere gerne mal selber, allerdings nutze ich ein sehr altes xampp-Packet (php < v5.2..), hatte dieses Problem (noch) nicht, dafür muß ich beim Erzeugen des csv unter Windows aufpassen (Speichern unter ... UTF-8), nur der Vollständigkeit halber prüf mal bitte in Deiner Konstellation auch so etwas ab.

    gruß

    PS. kleiner Programmschnipsel:

    while ( ($data = fgetcsv ($handle, 1000, ";")) !== FALSE ) {
    	        foreach($data as $key => $value){
    				$data[$key]=str_replace('"','Zoll',$value);
    		}
    		if($row==0){
    		               $import[]=$data;
    		}else{
    				array_push($import,$data);
    		}
    		print_r($data);
    		echo'<br>';
    		$row++;
    }

    Also wie Du siehst, hatte ich irgendwanneinmal Texte mit Zoll-Angaben (") in MySQL zu importieren und habe aus " dann eben das Wort Zoll gemacht, weil ich es anders nicht hinbekommen hatte, damals.
    Früher war nichts besser, aber es war gut ;)


    Beitrag zuletzt geändert: 19.6.2014 17:06:05 von harro
  6. Autor dieses Themas

    mein-wunschname

    mein-wunschname hat kostenlosen Webspace.

    Danke ersteinmal. Ich dachte, ich könnte da noch etwas machen, in dem ich an den Importeinstellungen irgendwo einen Schalter umlegen.
    Es geht um eine Vorwahldatenbank, die hat zwar ziemlich viele Datensätze, aber es gibt wirklich nur einen einzigen Ort, der einen Namenszusatz mit Anführungszeichen hat. Da mache ich es wohl mit der Hand.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!