M mikaeled Medlem sedan dec. 2000 157 inlägg Frågan 13 feb. 2001 21:21 #1 Hej,
Jag använder nu en vanliga .log filer för ett system med omkring 20 000 användare (filer).
Nu skulle jag vilja göra ett script som läser dessa log-filer och skapar rader i mysql databasen.
logfilerna är uppbyggda såhär och de är numrerade men vissa nummer är borta, pga att de har tagit bort sitt konto hos oss:
namn | email | etc | etc
Vore mycket tacksam för hjälp!
------------------
//Mikael
N nanne Medlem sedan dec. 1999 1 749 inlägg Buslätt....
Gör bara en loop som går igenom varje rad i filen.
Läs in hela raden och gör om den med explode("|",$rad);
Gör insertsatser utav det hela :)
slut på loop...
njut av den ökade hastigheten och flexibiliteten
------------------
"Information wants to be free -- because it is now so easy to copy and distribute casually -- and information wants to be expensive -- because in an Information Age, nothing is so valuable as the right information at the right time."
- John Perry Barlow
nanne.net
M mikaeled Medlem sedan dec. 2000 157 inlägg Hej,
Jag är inte så duktig på loopar etc. Skulle inte ngn vilja skriva koden?
Vore super tacksam
/Mikael
------------------
//Mikael
S stevenet Medlem sedan juni 2000 1 251 inlägg Ett litet exempel:
<?
$db = mysql_connect ("localhost", "anvandare", "losenord") OR DIE (mysql_error());
mysql_select_db("databas",$db) OR DIE (mysql_error());
$dir=opendir("/home/minhamkatalog/");
while($fil = readdir($dir)) {
$typ=substr($fil,0,-4);
if ($typ==".log") {
$array = readfile($fil);
$array=explode ("|", $array);
mysql_query("INSERT INTO tabell (namn, osv, osv) VALUES ('$array[0]','$array[1]','$array[2]')") OR DIE (mysql_error());
}
}
}
closedir($dir);
mysql_close($db);
?>
Har ej testats. Måste antagligen köras via kommandoraden om inte scripttimeouten i php.ini har ändrats.
------------------
SteveNet - stevenet@webmarkit.net
Cogito ergo doleo.
A Al Medlem sedan jan. 2001 22 inlägg Eller om du vill slippa att koda och loopa:
LOAD DATA LOCAL INFILE 'filnamn.log' INTO TABLE tabellen TERMINATED BY '|';
Skapa tabellen först.
Aha, det var flera filer, så det blir väl en loop ändå då om du har ett större antal filer, men frågan funkar juh.
/Al
[Redigerat av Al den 20 feb 2001]
M mikaeled Medlem sedan dec. 2000 157 inlägg Hej,
koden som en kille ovanför skrev fungerarade inte. Det blev ngt fel.
Ni andra kan ju försöka debugga den så att det funkar. Vore mycket tacksam!
------------------
//Mikael
N nybi Medlem sedan nov. 2000 59 inlägg vill inte låta elak eller nåt sånt men hrrm du är admin för ett system med ca 20 000 användare och du vet inte ens hur man loopar
M mikaeled Medlem sedan dec. 2000 157 inlägg Hej,
Det stämmer. Förut hade jag tillgång till en programmerare men han är tyvärr ute på en jordenruntresa.
Nu har jag fått intresset att byta från flat-file till mysql samt att utveckla tjänsten ännu mer.
Jag skulle gärna vilja ha fungerande kod, så jag vore tacksam om du kunde kika på koden ovan!
MVH
-Mikael