sql >> Database teknologi >  >> RDS >> Mysql

Hvordan importerer man mere end 100.000 poster til en mysql-database?

Fejlmeddelelsen er ret klar og viser dig, hvad problemet er:begrænsningen af ​​eksekveringstiden i dit php-miljø. Så nogle metoder til at løse dette er indlysende:

  1. forøg tidsgrænsen for dit miljø

Du kan gøre det ved enten at hæve grænsen i din php-konfiguration eller, hvis det er tilladt, ved dynamisk at øge den i dit importscript. Så noget som ini_set('max_execution_time', 3000) . Begge muligheder er dokumenteret. PHP-dokumentationen skal altid være det første sted, hvor du skal begynde at lede efter et svar på et sådant spørgsmål.

  1. brug et andet php-miljø

Typisk er en sådan begrænsning valgt for et webmiljø for at reducere risikoen for at sende anmodninger fra nogen derude. Intet taler dog imod at bruge en anden konfiguration til et andet miljø. Importjob er typisk ikke behandles ved at bruge webanmodninger, men ved at bruge php i kommandolinjen (CLI). Til sådanne bruges typisk en separat konfiguration. Igen er dette dokumenteret. Det er det, du kan bruge her til at konfigurere begge miljøer forskellige fra hinanden efter dine behov. Men for dette skal du have adgang til php på CLI. Det er ikke noget problem på dit eget system, men normalt ikke tilgængeligt på en billig webhostingtjeneste.

  1. opdel din import i mindre bidder

Da de data, du importerer, er gemt i en sql-fil, altså en simpel tekstfil, kan du bruge en hvilken som helst almindelig teksteditor til at ændre den fil. Bemærk:en teksteditor, ikke en tekstbehandler. Du kan opdele den store INSERT erklæring indeholdt i flere bidder. Syntaksen er ret indlysende.

  1. brug mange separate insert-sætninger i stedet for én stor

Afhængigt af det værktøj, du bruger til at oprette den dump-fil, du prøver at importere, har du nu mulighed for at oprette dumpen, så den bruger mange separate INSERT udsagn (en for hver række) i stedet for en stor kombineret. mysqldump tilbyder f.eks. --skip-extended-insert flag for dette. Med sådan en dumpfil er det trivielt at opdele importen i flere mindre bidder ved blot at opdele filen.

  1. omgå php for importen helt

Hvis du har direkte adgang til din databaseserver (MySQL i dette tilfælde), så kan du blot interagere direkte med den i stedet for at bruge phpMyAdmin værktøj derimellem. Du kan blot indlæse din dumpfil direkte ved hjælp af MySQLs source kommando. På den måde er du fuldstændig uafhængig af php-begrænsningerne.



  1. Unicode escape-sekvens i kommandolinje MySQL

  2. en effektiv måde at teste, om der findes en tabelrække

  3. Oprettelse af en midlertidig Oracle-tabel med samme tabelstruktur som en eksisterende tabel

  4. Brug af MYsql 5.6 Memcache