Veel records in aan tabel inserten
Met als aanleiding een topic op dit form heb ik een paar dagen geleden mijn ip_country
tabel te vernieuwen. Hiervoor heb ik een csv bestand gedownload van http://software77.net/geo-ip/
Omdat ik mijn twijfels had of ik zoveel records met een php script zou kunnen verwerken heb ik een db convertor die ik een paar geleden gemaakt heb (in Delphi) wat aangepast om de csv om te zetten naar een mysql tabel. Het resultaat is een tabel met meer dan 120.000 records, maar mijn programma deed daar meer dan 7 minuten terwijl ik toch met prepare en parameters gewerkt heb. Ik zelf vindt dat best wel lang, wat denken jullie?
tabel te vernieuwen. Hiervoor heb ik een csv bestand gedownload van http://software77.net/geo-ip/
Omdat ik mijn twijfels had of ik zoveel records met een php script zou kunnen verwerken heb ik een db convertor die ik een paar geleden gemaakt heb (in Delphi) wat aangepast om de csv om te zetten naar een mysql tabel. Het resultaat is een tabel met meer dan 120.000 records, maar mijn programma deed daar meer dan 7 minuten terwijl ik toch met prepare en parameters gewerkt heb. Ik zelf vindt dat best wel lang, wat denken jullie?
PHP hulp
22/11/2024 15:33:08Peter Sanders
15/11/2011 12:22:36Begrijp ik het goed dat je een groot CSV bestand wil importeren in een MySQL database? Dan kan je dat volgens mij gewoon met het volgende doen:
Dat duurt bij mij voor een paar honder duizend records niet meer dan een paar secondes.
Code (php)
1
2
3
2
3
LOAD DATA LOCAL INFILE '/locatie/van/bestand.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ',' ;
INTO TABLE table_name
FIELDS TERMINATED BY ',' ;
Dat duurt bij mij voor een paar honder duizend records niet meer dan een paar secondes.
Gewijzigd op 15/11/2011 12:23:46 door Peter Sanders
Dat heb je inderdaad goed begrepen. Het csv bestand bevat nogal wat 'vuiligheid' en de waarde van de velden is niet in overeenstemming met de veldtypes van de tabel. Ik heb ook niet altijd de zekerheid dat ik de voldoende permissies heb op de database, vandaar dat ik eerst dit geprobeerd heb.
Ik heb het nu teruggebracht naar minder dan 10 seconden in PHP met LOAD DATA
Dat is inclusief het inlezen van het csv bestand, het uitfilteren van foute regels en dat weer terugschrijven naar een nieuw bestand.
Dat is inclusief het inlezen van het csv bestand, het uitfilteren van foute regels en dat weer terugschrijven naar een nieuw bestand.