php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.03.2005, 16:38  
Gast
 
Beiträge: n/a
Standard txt.datei stündlich in mysql importieren und dann leeren

hallo,

ich möchte meine router logs stündlich in eine mysql datenbank schreiben und dann die datei leeren.

die datei heißt log.txt
jede zeile soll in eine spalte geschrieben werden und muß nicht getrennt werden.
welchen befehl muß ich an der konsole geben um diese datei einzulesen (will später im cron jab setzen)?
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.03.2005, 16:47  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

keiner weis wie deine tabelle aussieht, keiner weis wie die log.txt aussieht

also ohne mehr input kein output.
robo47 ist offline   Mit Zitat antworten
Alt 07.03.2005, 17:37  
Erfahrener Benutzer
 
Registriert seit: 30.06.2004
Beiträge: 619
tapferesschneiderlein
Standard

PHP-Code:
<?php

rename
('log.txt''php_ihn_ihr_sein_log');

$lines file('php_ihn_ihr_sein_log');

/* connect */
// ...

$query 'INSERT INTO tabelle ( field ) VALUES ( "' implode('" ), ( "'$lines) . '")';
if (
mysql_query($query))
    
unlink('php_ihn_ihr_sein_log');
// else ERROR

?>
Evtl. noch addslashes() einbauen ...
tapferesschneiderlein ist offline   Mit Zitat antworten
Alt 08.03.2005, 11:34  
Gast
 
Beiträge: n/a
Standard

@robo47,

die tabelle hat eine spalte.

die textdatei hat auch nur eine spalte aber viele zeilen.

nun soll jede zeile der textdatei in jeweils eine neue zeile in der tabelle der datenbank eingefügt werden. es soll nicht der ganze text in ein feld sondern neue zeile der textdatei auch neue zeile der tabelle.

@tapferesschneiderlein

schon mal vielen dank ich werde mal sehen ob ich damit etwas zusammen bekomme. bin nicht gerade der meister in php.
  Mit Zitat antworten
Alt 08.03.2005, 11:49  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Was macht es denn für einen Sinn,eine Textdatei zeilenweise in eine Tabelle einzuspeichern, ohne irgendwelche Schlüssel oder Suchbegriffe? Da bist du mit der Suche in einem Textfile garantiert besser bedient. Und machst dazu eine gescheite Logfile-Rotation.
Ich vermute allerdings, dass du in dem Logfile nicht nur eine "Spalte" hast, sondern dass dieses auch eine Struktur aufweist, z.B. Datum, Zeit, Fehlernummer, Text usw. Dann könnte es Sinn machen, die Daten strukturiert abzulegen, allerdings auch nur, wenn du oft darauf zugreifst. Um dir dabei helfen zu köne, müssten wir allerdings die genaue Struktur kennen.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 08.03.2005, 12:16  
Gast
 
Beiträge: n/a
Standard

so sieht das logfile aus:

Zitat:
Mar 7 16:45:01 172.27.142.10 INET: NAT: delete session on ifc 10002 prot 6 172.27.142.11:4595/80.228.95.125:36042 <-> 81.209.184.41:80
Mar 7 16:45:10 172.27.142.10 INET: NAT: new outgoing session on ifc 10002 prot 6 172.27.142.11:4597/80.228.95.125:36044 -> 81.209.184.41:80
Mar 7 16:45:10 172.27.142.10 INET: TX: change mss 1460 ==> 1452
Mar 7 16:45:10 172.27.142.10 INET: RX: clamp mss 1460 ==> 1452
Mar 7 16:45:16 172.27.142.10 INET: NAT: delete session on ifc 10002 prot 6 172.27.142.11:4596/80.228.95.125:36043 <-> 81.209.184.41:80
Mar 7 16:45:25 172.27.142.10 INET: NAT: new outgoing session on ifc 10002 prot 6 172.27.142.11:4598/80.228.95.125:36045 -> 81.209.184.41:80
Mar 7 16:45:25 172.27.142.10 INET: TX: change mss 1460 ==> 1452
Mar 7 16:45:25 172.27.142.10 INET: RX: clamp mss 1460 ==> 1452
Mar 7 16:45:32 172.27.142.10 INET: NAT: delete session on ifc 10002 prot 6 172.27.142.11:4597/80.228.95.125:36044 <-> 81.209.184.41:80
Mar 7 16:45:33 172.27.142.10 INET: NAT: new outgoing session on ifc 10002 prot 6 172.27.142.11:4599/80.228.95.125:36046 -> 81.209.184.41:80
Mar 7 16:45:33 172.27.142.10 INET: TX: change mss 1460 ==> 1452
alle zeilen fangen natürlich mit mar an es ist nur zu lang für das forum :wink:

sinn macht es da ich dann alles was älter als 14 tage ist automatisch löschen kann.
auch könnte man dann mit php eine abfrage auf die daten machen
  Mit Zitat antworten
Alt 08.03.2005, 14:01  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Wenn du die Einträge in der DB haben willst, dann würde ich dir die folgende Struktur empfehlen:
Code:
datum(date) | zeit(time) | ip(varchar(15)) | meldung(varchar(255), ev. text)
Allerdings irritiert mich, dass im Datum kein Jahr enthlten ist, das könnte beim Jahreswechsel zu Problemen führen. Mit folgendem Code schreibst du die Daten dann in die DB (Verbindung wird vorausgesetzt):
PHP-Code:
<?php
$daten 
file('log.txt');
foreach(
$daten as $zeile){
    
$search '/^(\w{3} \d{1,2}) (\d{1,2}:\d{1,2}:\d{1,2}) (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) (.*)$/U';
    
$res preg_match($search$zeile$found);
    
$datum date('Y-m-d', (strtotime($found[1])));
    
$zeit $found[2];  // nur wenn alle Teile zweistellig
    
$ip $found[3];
    
$text $found[4];
    
$sql "INSERT INTO tabelle(datum, zeit, ip, meldung)
            VALUES('$datum', '$zeit', '$ip', '$text')"
;
    
mysql_query($sql) or die(mysql_error());
}

?>
Ich würde dir allerdings immer noch eine Logfilrotation empfehlen, die du in einem einfachen Shell-Script (ich nehm an du arbeitest mit Linux) realisieren kannst:
Code:
#!/bin/bash

anzFiles=336  # Stündliche Rotation, 14 Tage
i=$anzFiles
name="log.";
while [ $i -gt 0 ]
do
   next=`expr $i - 1`
   if [ -f $name$next ]
   then
       mv $name$next $name$i
   fi
   i=`expr $i - 1`
done
cp "log.txt" "log.1"
cp "/dev/null" "log.txt"
Das Script kannst du dann direkt aus der crontab aufrufen und hast nicht den ganzen PHP/DB-Overhead.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
importieren von csv datei in mysql tabelle Datenbanken 3 02.06.2009 23:45
csv in mysql importieren Datenbanken 6 27.05.2009 20:07
[Erledigt] Inhalte aus Exceldateien in MySQL importieren Datenbanken 6 27.05.2009 20:03
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
Mysql Tabelle Exportieren und Importieren (Kopieren) PHP Tipps 2006 4 11.06.2006 22:06
CSV Datei in MySQL importieren phpler1609 PHP Tipps 2006 6 23.03.2006 14:48
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
XML File importieren in MYSQL Datenbank Datenbanken 2 03.09.2005 13:28
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
MYSQL läuft nur wenn /tmp auf 777 Datenbanken 5 06.07.2005 08:38
History in MySQL - durch importieren von txt Dateien. PHP Tipps 2005-2 0 27.06.2005 03:07
[Erledigt] CSV Datei in MySQL importieren Datenbanken 3 04.04.2005 09:11
[Erledigt] MySQL ODBC - Word 97 - Daten importieren Datenbanken 0 30.11.2004 10:44
Access denied for user: '@localhost' / SYSTEM@localhost Datenbanken 0 10.11.2004 20:35
[Erledigt] PHP5 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a m p; MySQL Datenbanken 5 01.08.2004 05:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
txt datei in mysql automatisch einfügen, http://www.php.de/datenbanken/19150-txt-datei-stuendlich-mysql-importieren-und-dann-leeren.html, shell datei leeren, bash mysql csv import, bash datei leeren, txt to mysql bash script, mysql tabelle leeren und importieren script, shellskript mysql datensätze aus textdatei einfügen, php sql daten automatisch importieren, logfile in datenbank importieren, csv automatisch in mysql einfügen, mysql in bash script, logfile in mysql importieren, automatischer import logdatei mysql, textdateien automatisch in mysql importieren, php logfile in datenbank importieren, php datei stündlich aufrufen, linux bash mysql csv import, mysql textdatei importieren, bash script text datei leeren

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:59 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.