Drange_2000 Skrevet 15. mars 2013 Del Skrevet 15. mars 2013 Hei, Jeg har en veldig stor .txt fil, som inneholder produktnavn jeg trenger og få inn i en database. Det er snakk om ca 500.000 produktnavn. Hvordan kan jeg løse dette på best mulig måte? Tanken er at man skal kunne søke opp alle disse produktnavnene som da vil ligge i databasen. Noen forslag? i og med at filen er så stor, er det ikke så lett og la PHP behandle alt på en gang, men hvordan skulle jeg gjort det ellers? en og en linje på hver refresh? Tar gjerne mot forslag. Hadde også vært behjelpelig om du ville dele litt kodesnutt sammen med tankene rundt det du sier. Lenke til kommentar
_dundun_ Skrevet 15. mars 2013 Del Skrevet 15. mars 2013 (endret) Tror egentlig ikke PHP er beste valg for dette her dersom ikke du kan kjøre det lokalt og ha kontroll på timeouts og minnebruk o.l. Vurdert Java, C# eller andre språk som er laget for lokale programmer? Antar dette er en engangsoperasjon? Endret 15. mars 2013 av kvasbo Lenke til kommentar
GeirGrusom Skrevet 15. mars 2013 Del Skrevet 15. mars 2013 Dersom man har forretningslogikk allerede i PHP så kan det være fornuftig å bruke denne for å gjøre dette. Det er ikke noe vits i å gjøre noen "refresh". Bare les inn filen i små deler som kan behandles, og behandle dette én og én av gangen. Om scriptet bruker lang tid på å kjøre spiller liten rolle. 1 Lenke til kommentar
Finnduz Skrevet 15. mars 2013 Del Skrevet 15. mars 2013 Ja, er kun ett "engangs" tilfelle. Får prøve og dele opp filen Lenke til kommentar
GeirGrusom Skrevet 15. mars 2013 Del Skrevet 15. mars 2013 Ja, er kun ett "engangs" tilfelle. Får prøve og dele opp filen For at det ikke er noen tvil her: du trenger ikke forbehandle filen. Bare les eksempelvis én og én linje ut av den. 1 Lenke til kommentar
Finnduz Skrevet 15. mars 2013 Del Skrevet 15. mars 2013 (endret) *edit* allerede svart Endret 15. mars 2013 av Finnduz Lenke til kommentar
Crowly Skrevet 19. mars 2013 Del Skrevet 19. mars 2013 (endret) Hvis det er mysql du har som database, kan du ta en titt på LOAD DATA INFILE Andre databaser har helt sikkert tilsvarende funksjonalitet. Edit: Dette er en veldig mye raskere løsning enn å gå via ett skript språk som f.eks. php. Vil tipper vi snakker (ti talls) sekunder fremfor minutter. Endret 21. mars 2013 av Crowly 1 Lenke til kommentar
Dan-Levi Skrevet 21. mars 2013 Del Skrevet 21. mars 2013 Er det kommaseparert data i filen? Alt på en linje? Er det noe tekst som ikke skal være der? Vet ikke hvordan filen din ser ut men hadde laget en helt enkel funksjon function fileToDatabase($txtFile, $tableName){ $file = fopen($txtFile,"r"); while(!feof($file)){ $line = fgets($file); $pieces = explode(",", $line); $brand = $pieces[0]; osv... $sql2 = "INSERT INTO $tableName (brand, osv...) VALUES ('$brand',osv...)"; mysql_query($sql2); } fclose($file); } Lenke til kommentar
magnusalex Skrevet 21. mars 2013 Del Skrevet 21. mars 2013 Hvorfor overkomplisere? PhpMyAdmin støtter insert av både csv, xls... Om du får timeout kan du jo bare dele opp filen i 5 like filer eller så. Jeg gjør en slik jobb på ca. 192.000 produktpriser hver uke, fungerer så fint så 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å