sql >> Databasteknik >  >> RDS >> Mysql

Hur importerar man mer än 100 000 poster till en mysql-databas?

Felmeddelandet är ganska tydligt och visar dig vad problemet är:begränsningen av exekveringstiden i din php-miljö. Så några metoder för att lösa detta är uppenbara:

  1. Öka tidsgränsen för din miljö

Du kan göra det genom att antingen höja gränsen i din php-konfiguration eller, om det är tillåtet, genom att dynamiskt öka den i ditt importskript. Så något som ini_set('max_execution_time', 3000) . Båda alternativen är dokumenterade. PHP-dokumentationen bör alltid vara den första platsen där du bör börja leta efter ett svar på en sådan fråga.

  1. använd en annan php-miljö

Vanligtvis väljs en sådan begränsning för en webbmiljö för att minska riskerna för att skicka förfrågningar från någon där ute. Men ingenting talar emot att använda en annan konfiguration för en annan miljö. Importjobb är vanligtvis inte bearbetas genom att använda webbförfrågningar, men genom att använda php på kommandoraden (CLI). För sådana används vanligtvis en separat konfiguration. Återigen är detta dokumenterat. Det är vad du kan använda här för att konfigurera båda miljöerna olika från varandra efter dina behov. Men för detta behöver du tillgång till php på CLI. Det är inget problem på ditt eget system, men vanligtvis inte tillgängligt på ett billigt webbhotell.

  1. dela upp importen i mindre bitar

Eftersom data du importerar lagras i en sql-fil, alltså en enkel textfil, kan du använda vilken vanlig textredigerare som helst för att ändra den filen. Obs:en textredigerare, inte en ordbehandlare. Du kan dela upp den stora INSERT uttalandet som finns där i flera bitar. Syntaxen är ganska uppenbar.

  1. använd många separata insert-satser istället för en stor

Beroende på vilket verktyg du använder för att skapa den dumpfilen du försöker importera nu har du ett alternativ att skapa dumpen så att den använder många separata INSERT uttalanden (en för varje rad) istället för en stor, kombinerad. mysqldump erbjuder till exempel --skip-extended-insert flagga för detta. Med en sådan dumpfil är det trivialt att dela upp importen i flera mindre bitar genom att helt enkelt dela upp filen.

  1. förbigå php för importen helt och hållet

Om du har direkt tillgång till din databasserver (MySQL i det här fallet), kan du helt enkelt interagera direkt med den istället för att använda phpMyAdmin verktyg däremellan. Du kan enkelt ladda din dumpfil direkt med hjälp av MySQLs source kommando. På så sätt är du helt oberoende av php-begränsningarna.



  1. Hur får du din booleska fulltextsökning att ta upp termen C++?

  2. Meddelande:count():Parametern måste vara en array eller ett objekt som implementerar Countable codeigniter på centos

  3. Strängsammansättning med en noll verkar ogiltigförklara hela strängen - är det önskat beteende i Postgres?

  4. hur använder man phpfastcache?