Cum deschizi un fisier mare, o baza de date mare(100 Gb)?

Depinde majoritatea folosesc paginarea memoriei, aloca o parte din fisier in care navigezi si nu incarca tot fisierul, ce nu e folosit se dezaloca, pe parcurs ce navigezi se aloca si se dezaloca.

1 Like

Pentru procesare foloseste un utilitar gen sed https://www.digitalocean.com/community/tutorials/the-basics-of-using-the-sed-stream-editor-to-manipulate-text-in-linux

O alta varianta ar fi sa faci un mic programel care sa citeasca fisierul respectiv, singurul lucrul la care trebuie sa fii atent e sa faci procesarea linie cu linie ceva de genul:


Asa poti face schimbari pe linie cum vrei, poate mai complexe decat permite un stream editor (exemplu stocarea unui state si schimbarea functie de anumit conditii/variabile).

1 Like
$block =1024*1024;//1MB or counld be any higher than HDD block_size*2
if( $fh = fopen("file.txt", "r") ){ 
            $left='';
    while (!feof($fh)) {// read the file
       $temp = fread($fh, $block);  
       $fgetslines = explode("\n",$temp);
       $lines[0]=$left.$lines[0];
       if(!feof($fh) )$left = array_pop($lines);           
       foreach($lines as $k => $line){
           //do smth with $line
        }
     }
}
fclose($fh);

De pe linkul stack overflow.
Tipul zice ca a testat pe fisiere foarte mari(100gb)

de ce nu faceti in C