Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Textdatei mittels festen Spaltenbreiten in MySQL per PHP

uspc / 11 Antworten / Flachansicht Nickles

Hallo, eine Textdatei mit etwa 100 Zeilen und jeweils 160 aneinandergereihten Zeichen (Positionen) möchte ich in MySQL bringen. Als Werkzeug dazu soll PHP dienen. Ich möchte also diese Textdatei öffnen und per Angabe wie zB. von Pos. 1-8 ist Spalte A, 9-12 ist Spalte B, 13-20 ist Spalte C usw. umschreiben. Dazu stelle ich mir dann eine erzeugte CSV-Datei vor, wo jeweils an den Positionen ein Komma oder ein Semikolon steht.

Frage: Ist substr der richtige Weg oder geht das auch viel einfacher/anders?

Beispiel für die Textdatei:

RHB2158400068576519684621FG5416854621654 und länger

RFJ68621654632162036546520651652165165065 und länger

usw.

soll jetzt in die DB, einfach umwandeln in:

RHB2158;4000;68576519;684621F;G5416854;621654

RFJ68621;6546;3216203;65465206;51652165;165065

Diese Datei kann dann so die DB problemlos einlesen. Ich hoffe, ich konnte mich verständlich ausdrücken... Achso, Hinweis: das Ganze bedient dann ein User, also kein Zugriff auf phpMyAdmin oder so. Das muss alles per Weboberfläche und entsprechenden PHP-Scripten laufen.

Vielen Dank!  Gruß uspc

bei Antwort benachrichtigen
uspc Borlander „Direkt in der DB, oder per Webinterface? Wenn es ...“
Optionen

Danke Borlander. Also mein Versuch mit substr in PHP funktioniert zwar, aber meine Textdatei hat über 4000 Zeilen mit 28 Spalten. Das Einlesen auf dem lokalen PC dauert ein paar Sekunden und bei 400 Zeilen macht MySQL Schluß. Insert habe ich in eine Schleife gelegt, in der pro Zeile die 28 Felder eingetragen werden. Klappt - aber nur theoretisch, bis zum Abbruch. Soll man ja so auch nicht machen. Oder kann man das irgendwie beeinflussen, dass es doch geht? Also z.B. mit einer kleinen Pause bis zur nächsten Schleife? Zeit ist genug da...

Das mit VB Macro wollte ich vermeiden, da hab ich gar keine Vorkenntnisse (ist schon 10 Jahre her). Die Variante das Textfeld mit SELECT SUBSTRING  zu zerstückeln ist gut, ich weiß nur nicht, wie ich das einzelne Feld nach einer Korrektur o.ä. wieder dort hinbekomme (also Update_an_die_Stelle) und dann die Textdatei im gleichen Format wie vorher erzeuge, nur mit korrigierten Werten... Bin weiter dran...

VG uspc

bei Antwort benachrichtigen