Autor Zpráva
radas
Profil *
Zdravím,
chtěl bych se zeptat.
Mam velky csv soubor (řadově v MB) a mam obavy (snad oprávněné) že kdybych to zadal ke zpracovaní najednou, tak že přetižim server. A nemůžu zaručit, že csv soubor bude vždy jen do nějaké určité velikosti.

Neřešil někdo něco podobného, jestli ano prosím o nějaké nasměrovani jak to řešit.

Moje první řešení je, že celý csv soubor bych naral na server, pak bych si ho prošel, zjistil počet řádku a pak jej rozložil do několika souborů, a až potom bych postupně zpracovaval jednotlivé soubory.
Kajman_
Profil *
A není lepší jedna úloha. Proces bude trvat déle, ale postupně bude mít menší prioritu. Co si to nejprve vyskoušet a změřit na vývojovém serveru?
radas
Profil *
Kajman_
ono to asi tak dopadne, že se to bude muset vyzkoušet, jen jsem se chtěl zeptat jestli nahodou někdo to neřešil...
ondra121
Profil *
Zkus mrknout na tenhle script, kdysi jsem ho někde objevil a měl by schroupnout i větší soubory.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form method="POST" action="">
  <p><input type="text" name="soubor" size="20"><input type="submit" value="Odeslat" name="B1"><input type="reset" value="Vynulovat" name="B2"></p>
</form>
<?

// inicializace,  řádek
$row = 1;

//kontrola existence souboru
If (File_Exists($soubor))
   {
           //otevření souboru
        $file_csv = fopen ($soubor, "r");
        //začátek tabulky
        echo "<table border='1' align='center'>";
        //cyklus který postupně přečte všechny řádky tabulky ...

        //... řádek potom rozdělí na jednotlivé hodnoty do pole $data

        while ($data = fgetcsv ($file_csv, 1000, ",")) 
        {
                 echo "<tr>";         //nový řádek tabulky
                 $num = count ($data);   //zjistí počet sloupců
                 
                 //první sloupec bude obsahovat číslování řádků
                 echo "<td>".$row.". řádek</td>";
                 
                 //cyklus pro výpis jednotlivých hodnot tabulky

                 for ($c=0; $c<$num; $c++) 
                 {
                     echo "<td>";
                     echo $data[$c];    //výpis konkrétní hodnoty
                     echo "</td>";	
                 }

                 $row++;                //zvýší číslo řádku o 1
                 echo "</tr>";
                 //konec řádku
        }

        echo "</table>";
        fclose ($file_csv);            //uzavře soubor
    }
else
       { //pokud soubor neexistuje - vypíše chybu
         echo "Soubor neexistuje<br>";
       }

?>

</body>
</html>

Moderátor Alphard: Odstranil jsem ty chybné komentáře a některé zbytečné bílé znaky.
ondra121
Profil *
Koukám že se mi to sem vložilo nějak podivně, musíš si odstranit ty komentáře v cyklu.
fopen
Profil *
csv subor sa da importovať do aj excelu napriklad a tam ho rozedliť na menšie časti

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: