Veel records in aan tabel inserten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ger van Steenderen
Tutorial mod

Ger van Steenderen

15/11/2011 11:36:37
Quote Anchor link
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?
 
PHP hulp

PHP hulp

06/11/2024 00:14:10
 
Peter Sanders

Peter Sanders

15/11/2011 12:22:36
Quote Anchor link
Begrijp 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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
LOAD DATA LOCAL INFILE '/locatie/van/bestand.csv'
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
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

15/11/2011 14:20:45
Quote Anchor link
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.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

16/11/2011 15:31:09
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.