sql >> Database >  >> RDS >> Mysql

Hoe importeer je meer dan 100.000 records in een mysql-database?

De foutmelding is vrij duidelijk en wijst je op wat het probleem is:de beperking van de uitvoeringstijd in je php-omgeving. Sommige benaderingen om dit op te lossen liggen dus voor de hand:

  1. verhoog de tijdslimiet van uw omgeving

U kunt dat doen door de limiet in uw php-configuratie te verhogen of, indien toegestaan, door deze dynamisch te verhogen in uw importscript. Dus zoiets als ini_set('max_execution_time', 3000) . Beide opties zijn gedocumenteerd. De php-documentatie moet altijd de eerste plek zijn waar je op zoek moet gaan naar een antwoord op zo'n vraag.

  1. gebruik een andere php-omgeving

Meestal wordt een dergelijke beperking gekozen voor een webomgeving om de risico's van het bedienen van verzoeken van iedereen die er is te verminderen. Er is echter niets tegen het gebruik van een andere configuratie voor een andere omgeving. Importtaken zijn doorgaans niet verwerkt met behulp van webverzoeken, maar met behulp van php in de opdrachtregel (CLI). Hiervoor wordt typisch een aparte configuratie gebruikt. Nogmaals, dit is gedocumenteerd. Dat is wat u hier kunt gebruiken om beide omgevingen verschillend van elkaar te configureren volgens uw behoeften. Hiervoor heeft u echter toegang tot php op CLI nodig. Op je eigen systeem is dat geen probleem, maar op een goedkope webhostingservice meestal niet.

  1. verdeel uw import in kleinere stukken

Aangezien de gegevens die u importeert, worden opgeslagen in een sql-bestand, dus een eenvoudig tekstbestand, kunt u elke gewone teksteditor gebruiken om dat bestand te wijzigen. Opmerking:een teksteditor, niet een tekstverwerker. Je kunt de grote INSERT . splitsen verklaring daarin in verschillende stukken. De syntaxis is vrij duidelijk.

  1. gebruik veel afzonderlijke insert-statements in plaats van één grote

Afhankelijk van de tool die je gebruikt om dat dumpbestand te maken dat je probeert te importeren, heb je nu een optie om de dump zo te maken dat het veel afzonderlijke INSERT gebruikt uitspraken (één voor elke rij) in plaats van één grote, gecombineerde. mysqldump biedt bijvoorbeeld de --skip-extended-insert vlag hiervoor. Met zo'n dumpbestand is het triviaal om de import op te splitsen in meerdere kleinere brokken door het bestand eenvoudig te splitsen.

  1. omzeil php voor het importeren helemaal

Als u directe toegang heeft tot uw databaseserver (MySQL in dit geval), dan kunt u er gewoon rechtstreeks mee communiceren in plaats van de phpMyAdmin te gebruiken gereedschap ertussen. U kunt uw dumpfile eenvoudig rechtstreeks laden door middel van MySQLs source opdracht. Op die manier bent u volledig onafhankelijk van de php-beperkingen.



  1. Er is een JNI-fout opgetreden, controleer uw installatie en probeer het opnieuw in Eclipse x86 Windows 8.1

  2. Lokale tijdelijke tabel in Oracle 10 (voor de reikwijdte van Stored Procedure)

  3. Oracle-trigger om een ​​automatische nummering te maken

  4. mysql_connect() Verschil tussen localhost en 127.0.0.1