Import CSV in MySQL bricht ab
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
code
datei
dienstag
einzigen ort
feld
import
importieren
inhalt
mittwoch
montag
nutz
person
problem
sonnabend
spalten
stunden
teil
url
zeile
zoll
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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ß -
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 -
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 -
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. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage