Gå til innhold

txt fil med informasjon inn i database


Anbefalte innlegg

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
Videoannonse
Annonse

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
Lenke til kommentar

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
Lenke til kommentar

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
Lenke til kommentar

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

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...