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

Come importare più di 100000 record in un database MySQL?

Il messaggio di errore è abbastanza chiaro e ti indica qual è il problema:la limitazione del tempo di esecuzione nel tuo ambiente php. Quindi alcuni approcci per risolvere questo problema sono ovvi:

  1. aumentare il limite di tempo del tuo ambiente

Puoi farlo aumentando il limite nella tua configurazione php o, se consentito, aumentandolo dinamicamente all'interno del tuo script di importazione. Quindi qualcosa come ini_set('max_execution_time', 3000) . Entrambe le opzioni sono documentate. La documentazione php dovrebbe sempre essere il primo luogo in cui dovresti iniziare a cercare una risposta a una domanda del genere.

  1. usa un ambiente php diverso

In genere tale limitazione viene scelta per un ambiente Web per ridurre i rischi di soddisfare le richieste di chiunque sia là fuori. Tuttavia, nulla vieta l'utilizzo di una configurazione diversa per un altro ambiente. I lavori di importazione in genere non elaborato utilizzando le richieste web, ma utilizzando php nella riga di comando (CLI). Per tale tipicamente viene utilizzata una configurazione separata. Ancora una volta, questo è documentato. Questo è ciò che puoi utilizzare qui per configurare entrambi gli ambienti diversi l'uno dall'altro in base alle tue esigenze. Tuttavia per questo è necessario accedere a php sulla CLI. Questo non è un problema sul tuo sistema, ma di solito non è disponibile su un servizio di hosting web economico.

  1. Dividi l'importazione in blocchi più piccoli

Poiché i dati che importi sono archiviati in un file sql, quindi un semplice file di testo, puoi utilizzare qualsiasi normale editor di testo per modificare quel file. Nota:un editor di testo, non un elaboratore di testi. Puoi dividere il grande INSERT dichiarazione contenuta in esso in diversi blocchi. La sintassi è abbastanza ovvia.

  1. usa molte istruzioni di inserimento separate invece di una grande

A seconda dello strumento che usi per creare quel file di dump che stai tentando di importare ora hai un'opzione per creare il dump in modo tale che usi molti INSERT separati istruzioni (una per ogni riga) invece di una grande, combinata. mysqldump ad esempio offre il --skip-extended-insert bandiera per questo. Con un tale file di dump è banale dividere l'importazione in diversi blocchi più piccoli semplicemente dividendo il file.

  1. ignora del tutto php per l'importazione

Se hai un accesso diretto al tuo server di database (MySQL in questo caso), puoi semplicemente interagire direttamente con esso invece di usare phpMyAdmin strumento in mezzo. Puoi semplicemente caricare il tuo dumpfile direttamente tramite MySQLs source comando. In questo modo sei completamente indipendente dalle limitazioni di php.