Am Mittwoch 15 Juli 2009 schrieb Hans_B:
Christoph Hanslik schrieb:
Am Dienstag 14 Juli 2009 schrieb Hans_B:
Daniel Bauer schrieb:
On Tuesday 14 July 2009 16:49:38, Hans_B wrote:
Folgendes, ich habe eine Textdatei Inhalt:
Jun 28 18:23:59 00-12-f0-02-1d-3a Jun 28 18:33:14 00-12-f0-02-1d-3a ...
Diese Daten möchte ich nu in die Mysql Datenbank senden. Wobei jede Zeile einen Eintrag in die Datenbank darstellen soll.
Ich würde das mit einem php-script machen. So in der Art:
<?php $in = fopen ("datei.txt", "r"); while (!feof($in)) { $zeile = fgets($in); $felder=explode(" ", $zeile); $resultat=mysql_query("INSERT INTO tabelle SET feld0='$felder[0]', feld1='$felder[1]', ... "); } ... ?>
Es gibt sicher unzählige andere, wahrscheinlich simplere Möglichkeiten.
Daniel
Hallo zusammen,
gibt es keine Möglichkeit das direkt mit Bash Script umzusetzten?
Hi, nur bash wird wohl etwas komplizierter, aber awk kann die Daten zu SQL-Befehlen umschnitzen und dann kannst Du das SQL-file auf der Kommandozeile in die Datenbank einlesen, z.B.
% awk '{print "INSERT INTO table (month, day, time, mac) VALUES ($1, $2, $3,\ $4);"}' test-file >test.sql
% mysql -u user -h host -D db-name < test.sql (Passwortabfrage)
fertig. Mit Kommata und anderen Satzzeichen vielleicht noch etwas experimentieren, ist als reine Trockenübung sicher noch was nicht ganz gar.
Viel Vergnügen
Christoph
Hallo Christoph,
habe es nun getestet, nach dem ich den Aufruf des scripts mache bringt er mir die Hilfe con mysql.
Ist es korrekt das er mir die in der Datei .sql dann die Zeilen stehen
INSERT INTO table (month, day, time, mac) VALUES ($1, $2, $3, $4);
müsste dort nicht drin stehen
INSERT INTO table (Jun, 28, 18:23:59, 00-12-f0-02-1d-3a) VALUES ($1, $2, $3, $4);
oder irre ich mich da?
Danke schon mal im vorraus....
Gruß Hans
Hi Hans_B, am awk-Befehl ist was faul: Die $1-$4 müssen ausquotiert werden. Also lautet der Befehl: % awk '{print"INSERT INTO table (month, day, time, mac) VALUES \ ("$1", "$2", "$3", "$4");"}' test >test.sql Ergebnis Deiner Testzeilen: % cat test.sql INSERT INTO table (month, day, time, mac) VALUES (Jun, 28, 18:23:59, 00-12-f0-02-1d-3a); INSERT INTO table (month, day, time, mac) VALUES (Jun, 28, 18:33:14, 00-12-f0-02-1d-3a); INSERT INTO table (month, day, time, mac) VALUES (Jun, 28, 20:01:32, 00-12-f0-02-1d-3a); INSERT INTO table (month, day, time, mac) VALUES (Jun, 28, 20:03:21, 00-12-f0-02-1d-3a); INSERT INTO table (month, day, time, mac) VALUES (Jun, 28, 20:17:19, 00-12-f0-02-1d-3a); INSERT INTO table (month, day, time, mac) VALUES (Jun, 28, 20:18:23, 00-12-f0-02-1d-3a); INSERT INTO table (month, day, time, mac) VALUES (Jun, 28, 22:22:56, 00-12-f0-02-1d-3a); INSERT INTO table (month, day, time, mac) VALUES (Jun, 29, 15:27:21, 00-12-f0-02-1d-3a); INSERT INTO table (month, day, time, mac) VALUES (Jun, 29, 15:32:44, 00-12-f0-02-1d-3a); INSERT INTO table (month, day, time, mac) VALUES (Jun, 29, 15:33:20, 00-12-f0-02-1d-3a); INSERT INTO table (month, day, time, mac) VALUES (Jun, 29, 15:36:24, 00-12-f0-02-1d-3a); INSERT INTO table (month, day, time, mac) VALUES (Jun, 29, 15:36:59, 00-12-f0-02-1d-3a); (Zeilenumbruch von KMail) Das sollte SQL verstehen können. Aber die Lösung von David Haller sieht ja viel eleganter aus (wenn sie geht ...) Viel Erfolg Christoph --
-- hanslik bei hanslux.de -- << -- http://www.hanslux.de -- << -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org