Probleme beim einlesen
der_Suchende
- datenbank
0 christian0 der_Suchende0 Guma
0 dedlfix
0 AN_dedlfix0 dedlfix
0 AN_dedlfix0 dedlfix
Sorry leute das mich nochmal melden muss,
ich habe folgendes Problem:
ich möchte das in die Datenbank einlesen (aus einer Textdatei):
TEXT TEXT %
TEXT noch mehr TEXT ...... %
TEXT TEXT TEXT und WIEDER TEXT
Das Prozentzeichen ist das Trennzeichen der Felder.
Aber er ließt nur den ersten satz ein, mehr nicht.
Also habe ich das mal so versucht:
TEXT TEXT % TEXT noch mehr TEXT ...... % TEXT TEXT TEXT und WIEDER TEXT
Also alles in einer Zeile, das klappt auch. Die daten werden in die jeweiligen Zellen/Felder der Tabelle eingelesen.
Aber, bei sehr langen Text macht der Editor irgendwann ein Zeilenumbruch und dann habe ich wieder das Problem.
MySQL scheint nur alles richtig einzulesen was in einer Zeile einer Datei steht, oder mache ich was falsch?
Mein befehl für die Datenbank:
LOAD DATA LOCAL INFILE "text.txt" INTO TABLE tabellenname FIELDS TERMINATED BY '%'
Danke wenn mir einer Helfen kann!
das problem wird sein, dass das trenzeichen zwar '%' ist, aber tatsächlich am ende jeder zeile ein '%\n\r' oder '%\n' (je nach betriebssystem.
Ok danke, sowas habe ich mir auch schon gedacht, aber was soll ich jetzt machen?
Es liegen 30 Textdatein vor die ganz normal untereinander geschrieben sind und jedes feld mit '%' getrennt ist.
Jede Datei besteht sozusagen aus 10 Feldern und haben insgesammt 1000 Zeichen.
Wie soll ich die jetzt einlesen?
Bin echt am verzweifeln..........
Hallo suchender,
speichere mal die Textdatei im Textpad unter uft-8 ab. Falls das nicht speiche unter ANSI ab!
Das kann helfen. Guma
Kann helfen, tut es aber leider nicht.
Es muss doch eine möglichkeit geben MySQL beizubringen Zeilenumbrüche
zu ignorieren.
Was kann ich noch tun???
echo $begrüßung;
TEXT TEXT %
TEXT noch mehr TEXT ...... %
TEXT TEXT TEXT und WIEDER TEXT
Das Prozentzeichen ist das Trennzeichen der Felder.
Aber er ließt nur den ersten satz ein, mehr nicht.
LOAD DATA LOCAL INFILE "text.txt" INTO TABLE tabellenname FIELDS TERMINATED BY '%'
Die LOAD DATA INFILE Syntax kennt nicht nur FIELDS TERMINATED BY ... sondern auch LINES TERMINATED BY. Der Defaultwert, wenn nicht angegeben, ist ein Zeilenumbruch.
echo "$verabschiedung $name";
Ok,
wie muss ich das in meinem fall den nun angeben?
Danke wenn du mir weiterhelfen möchtest.
echo $begrüßung;
wie muss ich das in meinem fall den nun angeben?
Was genau liegt eigentlich vor? Pro Datei ein Datensatz, wobei die Felder mit % plus Zeilenumbruch getrennt sind?
Damit dann keine Zeilen - sprich: einzelne Datensätze - erkannt werden, solltest du LINES TERMINATED BY auf einen Leerstring setzen. Wenn das nicht zum Erfolg führt, nimm irgendeine Zeichenfolge, die garantiert nicht in den Daten vorkommt.
Für die Trennung der Felder solltest du die wirklich verwendeten Zeichen angeben. Dazu müsstest du zuerst ermitteln, welche(s) Zeichen deinen Zeilenumbruch darstellt. Schau mit einem Hex-Editor nach, ob dort 0D, 0A oder beides nacheinander auftritt. Für 0D notierst du \r und für 0A nimmst du \n. Zusammen mit dem % und in der richtigen Reihenfolge ist das der Wert für das FIELDS TERMINATED BY.
echo "$verabschiedung $name";
Hallo,
gehe bitte mal auf <www.studroa.de/mein_problem>
Wenn du dir jetzt mal den Seitenquelltext anschaust, das ist das was in die Datenbank soll, mit allen HTML tags.
Das % zeichen ist das trennungszeichen.
Ich habe 29 Datein mit HTML tags etc die so in die Datenbank muss, doch da die Datein auch Zeilenumbrüche im Text hat, macht MySQL das nicht sondern ließt nur die erste Zeile ein Speichert das auch in der ersten Spalte der Tabelle. Alles andere Speichert MySQL nicht oder Falsch.
Was soll ich machen? Das problem habe ich das erste mal und bin ziemlich ratlos...
Danke dedlfix
echo $begrüßung;
Was soll ich machen?
Du musst das standardmäßig eingestellte LINES TERMINATED BY '\n', so wie ich es bereits beschrieb, außer Kraft setzen. Einen anderen Vorschlag habe ich nicht.
echo "$verabschiedung $name";
Du musst das standardmäßig eingestellte LINES TERMINATED BY '\n', so wie ich es bereits beschrieb, außer Kraft setzen. Einen anderen Vorschlag habe ich nicht.
Ok, danke! Ich werde es versuchen! Vielen dank dedlfix!