text datei auslesen und in db speichern

Bash, Shell, PHP, Python, Perl, CGI
thegateway
Posts: 61
Joined: 2004-02-03 20:11

text datei auslesen und in db speichern

Post by thegateway »

hy ich hab ein kleines problemchen ich habe eine text datei in der immer automatisch daten geschrieben werden

dies sieht so aus

|10:25:26|12||Lobby|Andre|
|10:32:03|22|Bier Treff|Yvonne19*|

es werden die daten immer fortlaufend in eine log geschrieben. Damit ich nun mehr übersicht über das ganze habe möcht ich das in eine MySQL db schreiben lassen um es mir so zu sortieren wie ichs gern hätte.

ich weis nicht wie ich pro spalte auslesen kann |spalte1|spalte2|

ich weis nicht wie ich das script anfangen soll hätte da jemand etwas nettes für mich?
lord_pinhead
Posts: 774
Joined: 2004-04-26 15:57

Re: text datei auslesen und in db speichern

Post by lord_pinhead »

Zuerst einmal solltest du die Pipe am Anfang der Zeile wegnehmenen und das ganze in ein csv verträgliches Format ändern

Code: Select all

sed 's/^[|]*//;s/[|]*$//;s/|/,/g' $datei
Wobei der Delimiter relativ egal ist, aber die meisten Scripte wollen entweder ein Tabulator oder das Semikolon.

Automatisch in Mysql weiß ich jetzt nicht, in mein Buch steht nur das hier

Code: Select all

MySQL> load data local infile "date.csv" into table <deine Tabelle> fields terminated by ',';
ist in der Mysql Shell auszuführen

ungetestet:

Code: Select all

sed 's/^[|]*//;s/[|]*$//;s/|/,/g' $datei | mysqlimport --fields-terminated-by=',' <table>
croc
Posts: 71
Joined: 2005-09-16 15:30
Location: Leipzig

Re: text datei auslesen und in db speichern

Post by croc »

Ich würds einfach per PHP lösen.
Fertige Scripte gibts schon in Massen, die man nur noch leicht anpassen muss.
Oder selbst schreiben, PHP is ja keine schwere Sprache.
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: text datei auslesen und in db speichern

Post by Roger Wilco »

Das ganze sed und PHP Gewurschtel ist doch unnötig. LOAD DATA INFILE ist so flexibel ausgelegt, dass man die Datei in oben genanntem Format direkt einlesen kann, ohne die Feldtrennzeichen zu ersetzen.

-> http://dev.mysql.com/doc/refman/5.0/en/load-data.html