aog Skrevet 25. oktober 2004 Del Skrevet 25. oktober 2004 Jupp, jeg har spurt om nesten det samme før.. Dersom jeg har en txt-fil som ser slik ut: |navn|poeng|cru| ..så vil jeg gjøre dette om til en mysql tabel. row1 = navn, row2 = poeng osv.. Tipper jeg må bruke LOAD opplegget, men jeg føler meg veldig blond uten å faktisk være blond :-p Er det noen som har noen minutter til å komme med et forslag på hvordan jeg gjør det? Lenke til kommentar
Torbjørn Skrevet 26. oktober 2004 Del Skrevet 26. oktober 2004 *) åpne fila *) while løkke over hver linje ..*) split fila i 3 felter ..*) sett inn de 3 verdiene *) ferdig Lenke til kommentar
aog Skrevet 26. oktober 2004 Forfatter Del Skrevet 26. oktober 2004 oki... *) åpne fila fopen/readfile ++ (ikke noe problem tror jeg) *) while løkke over hver linje ? Må jeg ha dette for hver linje i txt-filen? Da blir det jo stress når det kommer flere linjer i txt-filen. eller? ..*) split fila i 3 felter her lurer jeg på hva jeg skal gjøre.... ..*) sett inn de 3 verdiene Skal gå greit vist jeg får til det andre :-p Lenke til kommentar
Torbjørn Skrevet 26. oktober 2004 Del Skrevet 26. oktober 2004 (endret) *) while løkke over hver linje ? Må jeg ha dette for hver linje i txt-filen? Da blir det jo stress når det kommer flere linjer i txt-filen. eller? Skal du ikke ha alle linjene inn i databasen da? ..*) split fila i 3 felter her lurer jeg på hva jeg skal gjøre.... søke i phpmanualen! jeg ser for meg at du har data under hverandre i en fil, dvs flere rader? EDIT: quote dritt. Endret 26. oktober 2004 av Torbjørn Lenke til kommentar
aog Skrevet 26. oktober 2004 Forfatter Del Skrevet 26. oktober 2004 For å si det slik.... Her ser du eksempel på hvordan det ser ut i txt-filen: Ole|2|45|91234 Per|43|0|123 Kari|0|0|21 Dette skal da inn i tabel slik: navn | poeng1 | poeng2 | poeng3 Ole | 2 | 45 | 91234 Per | 43 | 0 | 123 Kari | 0 | 0 | 21 Lenke til kommentar
Torbjørn Skrevet 26. oktober 2004 Del Skrevet 26. oktober 2004 (endret) mao du har flere linjer i din fil, hvorfor vil du da ikke kjøre løkka over alle linjer? EDIT: regner med du søkte manualen etter split Endret 26. oktober 2004 av Torbjørn Lenke til kommentar
aog Skrevet 26. oktober 2004 Forfatter Del Skrevet 26. oktober 2004 Sa vel egentlig ikke at jeg ikke ville ha det.. ..var nok dorlig formulert fra min side. Så, da såørr jeg slik: Hvordan virker dette? Må jeg manuelt sette inn while løkke for hver linje, eller går dette automatisk? Saken er at det heletiden vil komme flere linjer inn i txt-filen, og databasen skal opdateres en gang per dag. Dersom jeg må skrive inn while løkke for hver nye linje, så blir det jo mye arbeid hver dag. EDIT: regner med du søkte manualen etter split Dette kan jeg ingenting om. Nå vet jeg at jeg kan søke etter split i manualen siden du sa det, men jeg hadde ikke peiling på det tidligere :-p Jeg er en evig n00b i php Lenke til kommentar
Frank2004 Skrevet 26. oktober 2004 Del Skrevet 26. oktober 2004 Sa vel egentlig ikke at jeg ikke ville ha det....var nok dorlig formulert fra min side. Så, da såørr jeg slik: Hvordan virker dette? Må jeg manuelt sette inn while løkke for hver linje, eller går dette automatisk? Du setter opp en løkke som leser inn en ny linje fra filen og så behandler denne, eller avbrytes når du er kommet til slutten på fila. Saken er at det heletiden vil komme flere linjer inn i txt-filen, og databasen skal opdateres en gang per dag. Umm.. Hvor kommer denne tekstfilen fra? Når du først går over til å bruke en database så kunne det kanskje være en idé å legge til nye poster direkte i denne. Eller du må komme opp med en løsning som hindrer deg i å kopiere samme linje til databasen flere ganger. Lykke til. Lenke til kommentar
Torbjørn Skrevet 26. oktober 2004 Del Skrevet 26. oktober 2004 whileløkka er ment å prosessere fila linje for linje. while(etellerannet){ ..gjør noe med denne linja; ..sett inn i mysql etc.. } Lenke til kommentar
aog Skrevet 26. oktober 2004 Forfatter Del Skrevet 26. oktober 2004 Umm.. Hvor kommer denne tekstfilen fra? Når du først går over til å bruke en database så kunne det kanskje være en idé å legge til nye poster direkte i denne.Eller du må komme opp med en løsning som hindrer deg i å kopiere samme linje til databasen flere ganger. Lykke til. Jo, saken er at jeg spiller et MMORPG spill som heter Anarchy Olnine. I dette spille er jeg med i en Clan, og vi har en bot som vi bruker til å legge inn divers informasjon. Han som sitter med boten klarer ikke å legge informasjonen ut på andre måter, og jeg skal da hente denne informasjonen fra ham, og legge det inn i database så vi får det på websiden vår i tilleg til på boten. Lenke til kommentar
aog Skrevet 26. oktober 2004 Forfatter Del Skrevet 26. oktober 2004 Etter mye surfing på nette fant jeg dette: load data infile '/tmp/mytest.txt' into table thetbl fields terminated by ',' enclosed by '"' lines terminated by '\r\n'; Kan dette brukse? Lenke til kommentar
Nervetattoo Skrevet 26. oktober 2004 Del Skrevet 26. oktober 2004 Etter mye surfing på nette fant jeg dette: load data infile '/tmp/mytest.txt' into table thetbl fields terminated by ',' enclosed by '"' lines terminated by '\r\n'; Kan dette brukse? Eksempel på load funksjonen har jo veldig nylig vært nevnt her i forumet til og med. Men, du må nok skrive om load funksjonen til å bruke det du bruker i filen: load data infile '/tmp/mytest.txt' into table thetbl fields terminated by '|' lines terminated by '\r\n'; Det er lov å se over det man finner på nettet og prøve å forstå det selv da Lenke til kommentar
aog Skrevet 26. oktober 2004 Forfatter Del Skrevet 26. oktober 2004 Ja klart det er lov til å prøve å forstå det selv :-p terminated by '|' tok jeg som en selvfølge.. men enclosed by vist jeg ikke. /me opens notepad to do some testing. Lenke til kommentar
robgar Skrevet 26. oktober 2004 Del Skrevet 26. oktober 2004 (endret) Noe sant? <? //database snakk mysql_connect('localhost', 'usr', 'psw'); mysql_select_db('the_db'); //Foreach loop for hver linje i fila: (manualens eksempel) $lines = file ('flatfila.txt'); foreach ($lines as $line_num => $line) { $string = htmlspecialchars($line) list($navn, $poeng1, $poeng2osv) = split('|', $string); $query = "INSERT INTO `tabbel_navn` ('id', 'navn', 'poeng1', 'poeng2') VALUES ('', $navn, $poeng1, $poeng2 osv); mysql_query($query); } ?> Du bør ha en id kollone med AUTO_INCREMENT. Endret 26. oktober 2004 av robgar Lenke til kommentar
aog Skrevet 27. oktober 2004 Forfatter Del Skrevet 27. oktober 2004 jo.. det der var greit, men jeg får bare dne første linja i txt-filen.. ? Lenke til kommentar
oro2 Skrevet 27. oktober 2004 Del Skrevet 27. oktober 2004 (endret) Merkelig.. Har du plassert {}- tegnene på riktig plass slik at hele kodesekveksnen (etter foreach) utføres for hver linje? edit: trykkfeil Endret 27. oktober 2004 av oro2 Lenke til kommentar
aog Skrevet 27. oktober 2004 Forfatter Del Skrevet 27. oktober 2004 mysql_close(); var før } :-/ Nå virker det.. Lenke til kommentar
aog Skrevet 27. oktober 2004 Forfatter Del Skrevet 27. oktober 2004 Warning: split(): REG_EMPTY in /home/housemaa/public_html/aog/lc/db_test.php on line 21 split('|', $string); virker ikke. Liker vist ikke |. Tenkte jeg bare skulle si det. Lenke til kommentar
oro2 Skrevet 27. oktober 2004 Del Skrevet 27. oktober 2004 Det var litt rart. Greit nok at split( "|", $line ) ikke ville fungert.. men '|' eller "\|" skal fungere så vidt jeg vet. Lenke til kommentar
356speedster Skrevet 27. oktober 2004 Del Skrevet 27. oktober 2004 Dette lille scriptet gjør nettop det du ber om. Henter data fra filen /home/xxxx/textfile_tabellnavn.txt #!/usr/bin/perl use DBI; $REMOTE{db_name}='DBI:mysql:database=xxxx;host=xxxx; $REMOTE{db_user}='xxxx'; $REMOTE{db_pass}='xxxx'; @tables=('xxxx'); #add more to this array if necessary $input_prefix="/home/xxxx/textfile_"; #you don't need to set up anything below sub output_error { my ($where)=@_; print qq|Content-type: text/html\n\n <h2>Error encountered</h2> <p>$where <p>Execution stopped |; $dbh1->disconnect() if $dbh1; $dbh2->disconnect() if $dbh2; exit(); } sub output_ok { print qq|Content-type: text/html\n\n <h2>Import OK</h2> <p>$messages <p>$count rows were copied <p>Execution ended |; } $dbh1=DBI->connect($REMOTE{db_name},$REMOTE{db_user},$REMOTE{db_pass}) or &output_error('Error connecting to the database'); $count=0; $messages=""; foreach $table (@tables) { unless (open(INP,"${input_prefix}$table.txt")) { $messages.="File ${input_prefix}_$table.txt cannot be found<p>"; next; } $dbh1->do("delete from $table"); #comment this line if you do not want to wipe the tables each time; @colxp=(); $datacnt=$dbh1->selectall_arrayref("describe $table"); $datacnt=scalar(@$datacnt); for ($i=0;$i<$datacnt;$i++) { push @colxp,'?'; } $sth1=$dbh1->prepare("insert into $table values (".join(',',@colxp).")"); while (<INP>) { s/[\r\n]+$//; @data=split(/\|/); splice @data,$datacnt; while (scalar @data<$datacnt) { push @data,''; } $sth1->execute(@data); $count++; } $sth1->finish(); } $dbh1->disconnect(); &output_ok(); Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå