Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como importar mais de 100.000 registros em um banco de dados mysql?


A mensagem de erro é bastante clara e indica qual é o problema:a limitação do tempo de execução em seu ambiente php. Portanto, algumas abordagens para resolver isso são óbvias:
  1. aumente o limite de tempo do seu ambiente

Você pode fazer isso aumentando o limite em sua configuração php ou, se permitido, aumentando-o dinamicamente dentro de seu script de importação. Então, algo como ini_set('max_execution_time', 3000) . Ambas as opções estão documentadas. A documentação do php deve sempre ser o primeiro local onde você deve começar a procurar uma resposta para tal pergunta.
  1. usar um ambiente php diferente

Normalmente, essa limitação é escolhida para um ambiente da Web para reduzir os riscos de atender a solicitações de qualquer pessoa. No entanto, nada fala contra o uso de uma configuração diferente para outro ambiente. Os trabalhos de importação normalmente não processado usando solicitações da web, mas usando php na linha de comando (CLI). Para tal, normalmente é usada uma configuração separada. Novamente, isso está documentado. Isso é o que você pode usar aqui para configurar os dois ambientes diferentes um do outro de acordo com suas necessidades. No entanto, para isso, você precisa acessar o php na CLI. Isso não é problema em seu próprio sistema, mas geralmente não está disponível em um serviço de hospedagem barato.
  1. divida sua importação em partes menores

Como os dados que você importa são armazenados em um arquivo sql, portanto, um arquivo de texto simples, você pode usar qualquer editor de texto comum para modificar esse arquivo. Nota:um editor de texto, não um processador de texto. Você pode dividir o grande INSERT declaração contida lá em vários pedaços. A sintaxe é bastante óbvia.
  1. use várias instruções de inserção separadas em vez de uma grande

Dependendo da ferramenta que você usa para criar esse arquivo de despejo que você está tentando importar, agora você tem uma opção para criar o despejo de forma que ele use vários INSERT separados instruções (uma para cada linha) em vez de uma grande e combinada. mysqldump por exemplo, oferece o --skip-extended-insert bandeira para isso. Com esse arquivo de despejo, é trivial dividir a importação em vários pedaços menores simplesmente dividindo o arquivo.
  1. ignore completamente o php para a importação

Se você tiver acesso direto ao seu servidor de banco de dados (MySQL neste caso), você pode simplesmente interagir diretamente com ele em vez de usar o phpMyAdmin ferramenta no meio. Você pode simplesmente carregar seu dumpfile diretamente por meio do MySQLs source comando. Dessa forma você é completamente independente das limitações do php.