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
Borlander uspc „Textdatei mittels festen Spaltenbreiten in MySQL per PHP“
Optionen

Es gibt verschiedene Möglichkeiten. Theoretisch könntest Du auch die Textdatei direkt in die Datenbank importieren und dann per SQL in die Spalten der Zieltabelle aufteilen. Der direkte Import aus Dateien ist jedoch mit Einschränkungen verbunden und wird u.U. nicht auf externem Webspace laufen.

In sofern scheint mir ein Einlesen der Datei mit PHP und Teilen der Zeilen per substr ein sinnvoller Ansatz. Zumal damit auch noch eine sinnvolle Fehlerbehandlung - incl. Rückmeldung an den User - möglich ist.

Auf jeden Fall müssen die hochgeladenen Eingabedaten allerdings escaped und oder am besten in Verbindung mit einem Prepared Statement werden um SQL-Injections zu verhindern!

Oder wolltest Du einfach nur die Datei konvertieren und das Ergebnis dann direkt in die DB importieren? Dann würde ich dazu tendieren, das gleich mit der original Datei zu machen die in eine temporäere Tabelle zu importieren und von dort aus in SQL zu verarbeiten.

Gruß
Borlander

bei Antwort benachrichtigen