FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Klarade millennium-buggen
|
Jag skall läsa in ganska stora textfiler i PHP och sedan skyffla in dem i en databas.
Vilket sätt är snabbast ? |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
Hur mycket minne har PHP möjlighet att hantera? (memory_limit = ???)
Ta textfilen * 2 + lite overhead, och är textfilen under detta värde så borde det gå att läsa in hela filen, annars så skulle jag stycka filen (läs in filen i stycken i php). Samt för att underlätta för databasen så lägg lite längre frågor åt mysql. Tex: INSERT INTO table (`field1`, `field2`) VALUES ('value1', 'value2'), ('value1', 'value2') osv. |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Nykomling
|
Jag brukar göra sånt från prompten.
Har iofs vart färre än 100' rader endast än så länge. hur stor är filen och hur stor swap har du?(man jan göra en extra swap) /Tommy |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Klarade millennium-buggen
|
Citat:
Drömmen är slurpa i sig hela textfile till minne och sedan kluva upp den i mindre segment och sedan stoppa in dem i databasen. Filerna kan ha olika format, dvs ; eller \t sep. men dom skall ha samma format i databasen. |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Mycket flitig postare
|
MySQL kan ju importera filer direkt. Kanske kan vara något: http://dev.mysql.com/doc/refman/5.0/en/load-data.html
|
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Mycket flitig postare
|
|||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Klarade millennium-buggen
|
Kod:
<?php $filename = 'file.txt'; $fp = fopen($filename, 'r'); $content = fread($fp, filesize($filename)); fclose($fp); preg_match("#(;|\\t)\n#s", $content, $matches); printf_r($matches); ?> Annars är nog WizKid's förslag mest optimalt om det handlar om CSV data, då mysql har inbyggt stöd för detta. |
||
![]() |
![]() |
Svara |
|
|