Gå til innhold

txt fil med informasjon inn i database


Anbefalte innlegg

Skrevet

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.

Videoannonse
Annonse
Skrevet (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 av kvasbo
Skrevet

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.

  • Liker 1
Skrevet

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.

  • Liker 1
Skrevet (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 av Crowly
  • Liker 1
Skrevet

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);
}

Skrevet

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å :)

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...