Importando bancos de dados mysql. Como importar um grande banco de dados MySQL ignorando as restrições do phpMyAdmin

24.03.2023

Boa tarde amigos, hoje vamos aprender a fazer. Para que serve, você pode fazer uma pergunta. Em primeiro lugar exportação de banco de dados deve ser feito periodicamente para que em situações de emergência você não perca informações importantes para você. A exportação será um pequeno arquivo que armazenará todas as informações sobre o banco de dados. Para exportação de banco de dados você precisa ir ao PHPMyAdmin e clicar no banco de dados de seu interesse. Depois disso, você verá todas as tabelas nele e, sem entrar nelas, clique no botão de menu chamado exportar. A seguinte página aparecerá na sua frente:


Aconselho você a escolher um método de exportação rápida e também especificar no formato SQL. Depois disso, você pode pressionar ok. Você verá uma janela pedindo para salvar o arquivo.


Você salva o arquivo no local que precisa, o principal é lembrar onde você salvou, pois é muito importante para nós.
Quanto à forma usual de exportação. Você também pode usá-lo se precisar, há muitas configurações adicionais que você pode definir ao exportar. Por exemplo, selecione as tabelas necessárias do banco de dados, especifique a codificação e muito mais. Se você estiver interessado nesta configuração, poderá vê-la. Mas não vamos nos aprofundar neste cenário.
Depois de salvar o arquivo em seu computador, solicitarei que você exclua o banco de dados. Como fazer isso, não vou explicar para você, porque já passamos por isso. Não tenha medo de excluir, devolveremos tudo com você ao seu lugar.
É hora de ficar ocupado importação de banco de dados. Vá para o menu de importação.


Selecionamos a visão geral do seu computador e indicamos o caminho para o nosso arquivo. E pressione ok. Como você pode ver, você tem um erro. Não se assuste, o fato é que não importamos o banco de dados em si, mas apenas todas as suas tabelas. Portanto, primeiro crie um banco de dados, entre nele e clique no botão importar, tendo feito todos os itens acima. Ao clicar no botão OK, você terá sucesso e, se fizer tudo corretamente, nenhum erro deverá aparecer.


Como você pode ver, nossa tabela reapareceu em seu lugar e todos os dados nela foram salvos. Agora você entende que oportunidade maravilhosa exportação e importação de banco de dados no PHPMyAdmin. Afinal, se você perder em um dia todos os seus desenvolvimentos por muitos anos, graças a este arquivo você poderá devolver tudo. Com isso, me despeço de vocês em breve.

Saudações, amigos! 🙂

Hoje decidi continuar falando sobre como trabalhar com o MySQL no console e prestar atenção ao procedimento de exportação do banco de dados. Dados MySQL.

No artigo falarei sobre como fazer uma lixeira bancos de dados MySQL, bem como exportar dados do MySQL para arquivo Excel e formato csv.

Consideraremos várias opções para extrair informações de: criar um despejo de um e vários bancos de dados, exportar dados de tabelas separadas e os resultados de cálculos arbitrários SELECIONE solicitações de.

E também vamos falar sobre como exibir dados do banco de dados MySQL no console do servidor e linha de comando MySQL.

Neste artigo, não falarei sobre como exportar dados usando phpMyAdmin e outras ferramentas visuais.

Em primeiro lugar, porque já existe material suficiente na rede sobre o assunto. Além disso, material de alta qualidade, que não queimo com vontade de copiar e colar.

E, em segundo lugar, eu mesmo considerei brevemente o processo de enviar informações de um banco de dados MySQL para um arquivo SQL em um de meus artigos, sobre o qual falei.

Portanto, se você não é um desenvolvedor profissional ou administrador de sistema que pode encontrar informações úteis sobre como trabalhar com o console e veio apenas para obter instruções sobre como exportar o banco de dados para o phpMyAdmin, pode limitar-se a ler as informações do link acima.

Quero que me entenda bem: não quero ofendê-lo de forma alguma, mas apenas quero que gaste seu tempo com o máximo benefício para a causa e consiga o que procurava.

Isso conclui a parte introdutória e passamos para uma visão geral dos comandos do console para criar um dump do banco de dados MySQL, que decidi classificar pela quantidade de dados armazenados: desde a exportação de todo o banco de dados até tabelas individuais e resultados de consultas arbitrárias .

Criando um despejo de um banco de dados MySQL por meio do console

Quero fazer um pequeno esclarecimento logo no início.

Despejo de baseé um arquivo com um conjunto de comandos SQL que, ao ser executado, permite criar bancos de dados e tabelas, além de preenchê-los com informações. Um dump é necessário para quem deseja baixar um banco de dados MySQL para copiá-lo para outro servidor ou dentro de um já existente.

Além disso, se alguém não souber, um backup de banco de dados MySQL é, na verdade, seu despejo feito em um determinado período de tempo, o que permite restaurar a estrutura e os dados do banco de dados, se necessário.

exportação de dados- é apenas extrair informações de tabelas em forma de texto para trabalhos posteriores com editores de texto ou gráficos.

Portanto, os comandos para essas ações serão ligeiramente diferentes.

Para criar um despejo de banco de dados, o MySQL tem um utilitário embutido chamado mysqldump, para ser usado fora da linha de comando do MySQL no console do servidor ou outro shell.

Portanto, para a opção mais simples e comum - exportar dados de um banco de dados específico no console do MySQL para transferi-lo para outro servidor ou cópia interna, você precisa executar o seguinte comando:

mysqldump -u nome de usuário -p database_name > path_and_dump_file_name

Este utilitário pode criar despejos de banco de dados MySQL apenas na forma de arquivos com comandos SQL; portanto, qualquer extensão que você escolher para o arquivo, em qualquer caso, seu conteúdo será o mesmo. E não se esqueça de verificar as permissões de gravação do diretório em que ficará localizado antes de exportar as informações do MySQL, para que seja possível a criação do arquivo.

Se de repente você precisar fazer um dump com todos os bancos de dados no servidor, use a seguinte opção de comando:

mysqldump -u nome de usuário -p --all-databases > path_and_dump_file_name

Para despejar apenas alguns bancos de dados específicos, você precisa chamar mysqldump com as seguintes opções:

mysqldump -u nome de usuário -p --databases database_name1, database_name2, ... > path_and_dump_file_name

Como resultado, em cada caso, você receberá um dump do banco de dados MySQL contendo comandos para criar a estrutura das tabelas contidas (campos, seus tipos, índices, chaves, etc.), bem como operações para preenchê-los com dados.

Esta opção é adequada apenas para restaurar e copiar bancos de dados inteiros.

Como fazer backups de certas tabelas MySQL e obter seus dados em um formato legível será discutido mais adiante.

Despejando uma tabela MySQL e exportando dados

Para criar um dump de certas tabelas de banco de dados MySQL, precisamos do mesmo utilitário mysqldump, chamado com os seguintes parâmetros:

mysqldump -u nome de usuário -p database_name table_name1, table_name2, ... > path_and_dump_file_name

Mesmo ao chamar mysqldump, você pode especificar as tabelas necessárias como um valor de parâmetro --tabelas, ao usar qual o parâmetro --bancos de dados será ignorado:

mysqldump -u nome de usuário -p --databases database_name1, database_name2 --tables table_name1, table_name2, ... > path_and_dump_file_name

O exemplo acima exibirá o seguinte erro:

Mysqldump: Obteve o erro: 1049: Banco de dados desconhecido "database_name1," ao selecionar o banco de dados

Como você pode ver, apenas o banco de dados mais recente da lista dos especificados será usado. Em princípio, esse comportamento é bastante lógico, porque. todos os bancos de dados podem não conter as tabelas especificadas.

Ok, temos um despejo das tabelas do banco de dados MySQL. Pode ser usado para restaurá-los ou copiá-los junto com a estrutura.

Mas e se você precisar apenas obter as informações armazenadas neles e, de preferência, de forma legível, para que possa enviar ao gestor e visualizá-las em um editor de texto ou planilha comum? MySQL tem as ferramentas para isso também.

A opção de ligar para o utilitário nos ajudará a atingir nossos objetivos. mysql do console com certos parâmetros:

Mysql -u nome de usuário -p database_name -e "SELECT * FROM table_name"

Este comando nos permitirá executar uma consulta ao banco de dados necessário e enviar o resultado para o console sem ir para a linha de comando do MySQL.

Bem, para não enviar dados para o console, mas para gravá-los em um arquivo, você precisa complementar o comando da seguinte maneira:

Mysql -u nome de usuário -p -e "SELECT * FROM tablename" > path_and_filename

Graças a essas construções, podemos não apenas obter os dados armazenados em todos os campos da tabela, mas também em alguns específicos. Para isso, ao invés dos curingas (*), basta registrar os obrigatórios separados por vírgula.

Como resultado, obteremos um arquivo de texto regular na saída, que conterá os nomes dos campos na forma de cabeçalho e informações sobre eles para todos os registros. Pode ser aberto normalmente editor de texto, independentemente da resolução que você der ao criá-lo.

Se você deseja exportar dados do banco de dados MySQL no formato xls ou csv para que o arquivo resultante seja exibido corretamente nos editores de planilhas, como fazer isso será discutido um pouco mais tarde 🙂

Criando backups e extraindo dados do banco de dados MySQL usando consultas

Conversamos sobre como despejar um banco de dados MySQL - um e vários, bem como suas tabelas individuais. Mas, às vezes, na prática, há casos em que você precisa exportar um conjunto de dados que não se limita a uma tabela. Ou você precisa selecionar apenas alguns dados da tabela.

Os desenvolvedores de projetos corporativos geralmente se deparam com isso quando os gerentes pedem que forneçam todos os tipos de dados estatísticos. Ou quando você precisa fazer um backup de uma determinada parte da tabela para sua restauração rápida.

Para backup, precisamos do mesmo utilitário mysqldump, que deve ser chamado assim:

Mysqldump -u username -p dbname table_name --where "lookup" > path_and_dump_file_name

Como resultado, obteremos um arquivo com comandos SQL para a criação de uma tabela com toda a sua estrutura, que após a criação será preenchida com as informações selecionadas por meio de uma consulta de pesquisa.

Se apenas necessitamos obter os dados armazenados em uma ou mais tabelas, então precisamos modificar o comando usado no caso anterior para selecionar todos os dados em uma tabela, com apenas alguns esclarecimentos:

Mysql -u nome de usuário -p -e "SELECT * FROM table_name WHERE lookup" > path_and_file_name

Como você entende, além de vários esclarecimentos especificados na solicitação usando a diretiva ONDE, você pode usar outras construções SQL: JUNTAR, UNIÃO etc.

Qualquer estatística pode ser coletada 🙂

A mesma ação também pode ser executada na linha de comando do MySQL com o seguinte comando:

SELECT * FROM database_table WHERE lookup INTO OUTFILE "path_and_file_name";

Este comando foi projetado apenas para criar arquivos com os resultados da seleção. Além disso, os resultados podem não apenas ser exportados para arquivos, mas também gravados em variáveis, e os dados de saída podem ser formatados de várias maneiras.

Se o acima for o seu caso, você pode encontrar a lista completa de parâmetros e opções para chamar este comando aqui - https://dev.mysql.com/doc/refman/5.7/en/select-into.html

No final do meu breve tour pelo mysqldump, quero dar a opção de chamar um comando com uma lista de parâmetros para criar um dump otimizado do banco de dados e tabelas MySQL, restaurando o banco de dados e as tabelas individuais das quais levará menos tempo do que com uma chamada normal:

mysqldump -u nome de usuário -h MySQL_server_host_or_IP -p --no-autocommit --opt database_name > path_and_dump_file_name;

Por uma questão de experiência, usei esta opção para despejar o banco de dados Tamanho do MySQL em 143MB. A restauração subseqüente levou 59 segundos contra 1 minuto e 3 segundos quando o banco de dados foi restaurado de um despejo feito chamando mysqldump sem opções especiais.

Eu concordo que isso é um pouco. Mas isso é apenas no caso dado volume dados. Se usar esta técnica ao criar um dump maior que 1GB, a diferença será mais significativa.

Se você encontrar tal situação, não se esqueça de primeiro compactar o despejo do banco de dados MySQL em um arquivo. tar.gz é o melhor. Então a recuperação levará ainda menos tempo.

Exportar dados do MySQL para Excel e arquivos csv

Não foi à toa que combinei informações sobre a saída de informações do MySQL nesses dois formatos em um bloco, porque são muito parecidos, são usados ​​aproximadamente da mesma forma (para estruturar informações na forma de tabelas) e os mesmos comandos serão chamados para exportação.

Como você sabe, a única diferença significativa entre esses formatos é que as extensões xls e xlsx possuem arquivos criados no programa da Microsoft. Office Excel, que funciona apenas no Windows, enquanto os arquivos csv são mais versáteis e as operações com eles são possíveis em muitos editores.

Isso não significa que o xls não será aberto em nenhum lugar, exceto no Microsoft Office Excel. O mesmo OpenOffice confirma o contrário.

Mas para essa possibilidade, esse suporte deve estar presente no produto de software. csv são legíveis mesmo em um editor de texto comum, como o Bloco de Notas, apenas este formulário não será totalmente legível.

Para começar, apenas os resultados podem ser exportados para xls ou csv consultas SQL, com o qual aprendemos a trabalhar anteriormente, porque o banco de dados inteiro em um arquivo não será possível exibir em uma operação.

Em primeiro lugar, isso não é ideal, porque é improvável que esse arquivo seja aberto com grandes quantidades de informações armazenadas no banco de dados. E, em segundo lugar, não está claro como dividir as informações em tabelas e campos dentro do arquivo.

Não, é claro que é possível fazer isso, mas é improvável que um comando faça isso e, em geral, é improvável que alguém faça isso no console. Acho que para esses propósitos você precisará de um software especial, ou pelo menos um script.

Se de repente você souber como exportar informações de todo o banco de dados MySQL para um ou mais arquivos xls no console de uma vez, escreva sobre isso nos comentários. Acho que ler sobre isso será útil para muitos.

Portanto, se estamos falando sobre como exportar dados do MySQL para xls e csv, você pode fazer isso diretamente no console do servidor por meio do utilitário mysql ou in, o trabalho com o qual eu o apresentei em meu artigo anterior.

Vamos começar em ordem.

Você pode exportar dados do banco de dados MySQL para os formatos csv e xls diretamente no console do servidor usando os seguintes comandos.

Sobre linux sistemas:

Mysql -u nome de usuário -d dbname -p -e "SELECT * FROM dbtable;" | sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > path_and_file_name. csv

Em princípio, se absolutamente necessário, você pode usar este comando para exportar dados MySQL para um arquivo Excel. Mas, para ser sincero, não trabalhei com dados na prática, e o que vai sair no final - não faço ideia, porque. Eu trabalho agora no Windows. Se você usar este comando no Linux, escreva nos comentários sobre os resultados do seu trabalho. Acho que a informação será do interesse de todos.

Sobre janelas:

Exportar dados de tabelas MySQL para csv com o comando acima, infelizmente, não terá sucesso neste caso, porque O Windows, ao contrário do Linux, não possui um comando do console para trabalhar com streams, que é sed no Linux.

É claro que você pode instalá-lo, mas muitos problemas. Alternativamente, você também pode usar CygWinGenericNameé um emulador de console Linux para sistemas Windows.

Bem, se você já o tiver instalado. Caso contrário, exportar dados do banco de dados MySQL da maneira escolhida nos trará muitos problemas.

Mas extrair informações para um arquivo xls é tão fácil quanto 5 copeques 🙂 É muito fácil executá-lo da seguinte maneira, que eu pessoalmente tentei:

Mysql -u nome de usuário -d dbname -p -e "SELECT * FROM dbtable;" > path_and_file_name.xls

aberto dado arquivo no Microsoft Office Excel sem nenhum problema. A única coisa é que ao abrir uma mensagem foi exibida avisando que o formato real do arquivo que está sendo aberto difere da extensão especificada.

Mas ao confirmar a ação, o documento abriu sem dificuldade - todas as informações foram divididas em células da forma em que foram armazenadas na própria tabela.

Não sei, talvez ao realizar qualquer ação específica no Microsoft Office Excel, surjam problemas no futuro, não me aprofundei tanto. Na visão usual dos dados, pelo menos, não encontrei nada incomum.

Se você encontrar algum problema no processo de utilização do arquivo xls exportado do MySQL, seja neste programa ou em outros, por favor me avise nos comentários.

Da maneira descrita acima, você pode exportar o conteúdo do banco de dados MySQL para um arquivo csv, em princípio. Mas então os dados de diferentes campos da tabela serão gravados em massa, sem separadores, o que pode ser mal exibido em vários programas para trabalhar com tabelas, nas quais geralmente trabalham com arquivos csv.

O OpenOffice, aliás, não liga 🙂 Ele demarcou automaticamente as informações obtidas pela forma como exportamos o conteúdo do banco de dados MySQL para xls. Não sei como ele faz isso - mas recomendo usá-lo 🙂

Bem, o mesmo Microsoft Office Excel exibiu todas as informações correspondentes a um registro na tabela, escrevendo-as em uma célula sem separadores. Acho que outros editores de planilhas farão o mesmo.

Portanto, ao exportar um banco de dados MySQL para arquivos csv, você precisa fazer isso separando as informações com caracteres especiais aceitos pelos editores.

E aqui abordei suavemente a segunda maneira de exportar dados do MySQL para csv e xls, que é usar a linha de comando do MySQL.

Portanto, para exportar os dados do MySQL para um arquivo csv dessa maneira, precisamos do seguinte comando:

SELECT * FROM database_table INTO OUTFILE "path_and_file_name.csv" CAMPOS TERMINADOS POR "," INCLUÍDOS POR """ LINHAS TERMINADOS POR "\n";

Como resultado de sua execução, você receberá um arquivo csv no caminho especificado ao chamá-lo, que abrirá corretamente na maioria dos editores de planilhas modernos. Apenas no caso, eu te lembro de correr dado comando necessário apenas após a conexão com um banco de dados MySQL.

Este comando também é ótimo para exportar dados do MySQL para o arquivo xls para exibição correta no Microsoft Office Excel. Só que neste caso não precisamos de separadores, pois eles irão interferir na quebra de informações nas células:

SELECT * FROM database_table INTO OUTFILE "path_and_file_name.xls";

Porém, na prática, nem tudo é tão simples quanto descrevi. Durante a execução do comando, você pode encontrar o seguinte erro no console que impede a conclusão da exportação:

ERRO 1290 (HY000): O servidor MySQL está sendo executado com a opção --secure-file-priv, portanto, não pode executar esta instrução

É causado porque seu servidor MySQL foi iniciado com a opção --secure-file-priv. Pessoalmente, encontrei esse problema devido ao fato de que, para trabalhar no console, uso o kit de distribuição MySQL incluído no kit WAMP OpenServer, que, por sua vez, inicia o servidor MySQL dessa maneira.

Existem duas maneiras de resolver o problema aqui:

  • Alterar as opções de inicialização do servidor MySQL
  • Altere o caminho para o arquivo de exportação do MySQL de destino

O primeiro método parecia muito complicado para mim, porque. Eu teria que me aprofundar na configuração do OpenServer, que não foi escrita por mim com todas as circunstâncias que se seguiram 🙂 Portanto, decidi seguir o segundo caminho. Se você encontrar um problema semelhante, repita comigo.

Primeiro você precisa ir para a linha de comando do MySQL e executar um dos seguintes comandos:

MOSTRAR VARIÁVEIS COMO "secure_file_priv"; SELECT @@GLOBAL.secure_file_priv;

O resultado da execução de ambos será o valor da variável global MySQL Secure_file_priv, que contém o caminho para o diretório através do qual as operações de exportação e importação de dados do MySQL podem ser realizadas (no futuro, um link para o artigo sobre importação de dados).

Aqueles. ao usar comandos CARREGAR DADOS E SELECIONE … EM OUTFILE arquivos exportados e importados só podem ser localizados dentro deste diretório.

No meu caso, essa variável tinha um valor definido NULO, porque Eu, como já disse, utilizo os utilitários MySQL da distribuição incluída no OpenServer para trabalhar no console. valor dado indicou que as operações de exportação e importação de dados do MySQL usando os comandos especificados foram totalmente encerradas.

Como descobri mais tarde, essa é uma situação comum no caso de usar servidores WAMP e MAMP in a box.

Infelizmente, não foi possível usar os métodos usuais de alteração dos valores das variáveis ​​globais do MySQL no meu caso:

SET nome_da_variável = valor;

Como resultado, vi apenas o seguinte erro no console:

ERRO 1238 (HY000) na linha 1: Variável "secure_file_priv" é uma variável somente leitura.

Finalmente, para alterar o valor de uma variável Secure_file_priv e abrir as operações de exportação e importação, eu precisava entrar no arquivo de configuração do MySQL mysql.ini, que está localizado no diretório raiz da distribuição do MySQL, ou pode ser acessado de outra forma se o MySQL estiver incluído no seu WAMP/LAMP/ Construção do servidor MAMP.

A propósito, se você quiser alterar o caminho para o diretório do buffer de troca de arquivos, precisará fazer o mesmo.

No meu caso, essa variável já existia no config, só que de forma comentada:

Secure-file-priv = "%dprogdir%\\userdata\\temp"

Se você não o tiver, escreva-o do zero na seção (pelo menos, eu o localizei lá).

Eu descomentei e decidi usá-lo na forma em que foi escrito. Aqueles. ao exportar dados do MySQL e importá-los de volta, meus arquivos agora serão armazenados no diretório c:\openserver\userdata\temp\.

Depois de alterar a configuração (qualquer, diga-se de passagem), não se esqueça de reiniciar o servidor ou um serviço separado, cujas configurações você corrigiu, se possível, para que as alterações tenham efeito!

Para ter certeza, após reiniciar o servidor MySQL, exiba novamente a variável Secure_file_priv e copie seu valor para a área de transferência.

E agora precisamos chamar o comando, como no início, apenas antes do nome do arquivo no qual as informações do banco de dados MySQL serão salvas, escreva o caminho armazenado na variável que estamos alterando da seguinte forma:

SELECT * FROM database_table INTO OUTFILE "value_secure_file_priv\file_name.csv";

Depois disso, a exportação de dados do MySQL funcionou no meu caso.

Ponto importante! Se você estiver trabalhando com MySQL no Windows, não se esqueça de alterar "\" para "/" ao especificar o caminho para o arquivo, caso contrário, um erro com --secure-file-priv continuará a aparecer de qualquer maneira.

Este artigo sobre como despejar o banco de dados MySQL e suas tabelas, bem como como enviar dados de tabelas MySQL para vários formatos, chega ao fim. Escreva seu feedback nos comentários e compartilhe com todas as suas opções de roteiro que você usa na prática com mais frequência.

Se você gostou do artigo, pode agradecer ao autor repostando o artigo em mídia social ou financeiramente através do formulário abaixo, para que você possa pagar a hospedagem básica.

Boa sorte a todos e até breve! 🙂

PS: se você precisa de um site ou precisa fazer alterações em um já existente, mas não há tempo e desejo para isso, posso oferecer meus serviços.

Mais de 5 anos de experiência desenvolvimento de sites profissionais. Trabalhar com PHP

Frequentemente me perguntam como um grande banco de dados MySQL pode ser importado para um servidor. Sabe-se que por padrão o phpMyAdmin possui restrições quanto ao tamanho do banco de dados importado.

Se o seu dump não exceder muito o limite permitido, você poderá dividi-lo em várias partes e importá-lo em várias etapas. Isso se justifica se, por exemplo, o limite for 2Mb e seu banco de dados tiver 5-10Mb de tamanho. É claro que "cortar" um banco de dados de 100 MB em 50 partes é um processo bastante demorado e caro em termos de recursos de tempo.

Existem várias opções para resolver esse problema.

Editando a configuração do servidor web

Não há problemas especiais com isso no VDS / VPS, você só precisa corrigir a configuração. Ou seja, em php.ini aumente os valores máximos permitidos para arquivos carregados no servidor, o tamanho máximo para arquivos transferidos pelo método POST:

Post_max_size = 2.000 milhões upload_max_filesize = 2.000 milhões

Além disso, se seu banco de dados for muito grande, você deve aumentar o tempo máximo permitido de execução do script.

max_execution_time = 32000 max_input_time = 32000

E por precaução, você pode aumentar o tamanho da quantidade permitida de RAM:

memory_limit = 512M

Depois de fazer as alterações, certifique-se de reiniciar o servidor da web.

É claro que este método não é adequado para hospedagem virtual, porque não implica a capacidade de editar configurações.

Sypex Dumper

Você pode usar software de terceiros. E o primeiro aplicativo que vale a pena prestar atenção é o Sypex Dumper.

Tendo-o usado pela primeira vez há muitos anos e apreciado todas as suas capacidades e vantagens, posso rotulá-lo com segurança como “Must Have”. Sypex Dumper é um aplicativo de servidor PHP que não requer instalação. Basta copiá-lo, por exemplo, para a raiz do seu site no diretório sxd e chamá-lo no navegador: http://Your_Site/sxd/. Vale a pena notar que você deve primeiro colocar um despejo de seu banco de dados no diretório de backup. Depois que o script for inicializado, você verá um painel de autorização para se conectar ao banco de dados. Insira seu login e sua senha. O host e a porta são opcionais apenas se forem específicos.

Após a autorização, você pode ir diretamente para a importação do banco de dados. No campo "Base de dados" o banco de dados ao qual você está conectado será selecionado e no campo "Arquivo" você verá o despejo que você carregou anteriormente para o diretório Backup.

Para a maioria dos casos, nenhum Configurações adicionais não são mais necessários e você pode iniciar a importação com segurança clicando no botão "Executar". A importação, dependendo do tamanho do banco de dados e da velocidade de sua conexão com a Internet, pode levar algum tempo. Durante a importação, você pode ver quais tabelas estão sendo importadas no momento para o banco de dados. Após a conclusão do script, você verá o log de execução. Parece algo assim:

Isso, na verdade, é tudo - o banco de dados é importado!

Console

A importação por meio do console não será considerada. Acho que as pessoas que usam o console sem mim sabem importar qualquer banco de dados. E é melhor para usuários comuns sem treinamento especial não se intrometerem lá. Uma vez que a execução de alguns comandos pode levar a consequências graves, até uma falha completa do servidor.

Finalmente

Não pretendo dizer que o Sydex Dumper é a única e correta solução. Existem outras formas mais elegantes que exigem que o usuário tenha certo conhecimento e acesso adequado às configurações do servidor.

Mas em um ambiente de hospedagem compartilhada, Sydex Dumper certamente será seu assistente indispensável.

Assine meu telegrama e seja o primeiro a receber novos materiais, inclusive os que não estão no site.

Bancos de dados (ou DB para abreviar) na maioria dos sites têm um tamanho (peso) igual a várias dezenas de Mb (megabytes). O tamanho inicial do banco de dados no início de diferentes projetos depende da estrutura do próprio site (CMS), mas seu peso aumenta a cada nova entrada.

Os registros podem ser informações cadastrais do usuário, comentários, mensagens pessoais, produtos, notícias e outros dados armazenados no banco de dados do site.

Tive a oportunidade de trabalhar com vários sites, cujo tamanho dos bancos de dados ultrapassava 500 MB (megabytes), e em alguns chegava a 2 GB (gigabytes). Como bancos de dados desse tamanho são difíceis de transferir usando métodos padrão (devido aos limites de hospedagem e navegador), compartilharei com você vários métodos de trabalho que o ajudarão na resolução de tais tarefas (migração de grandes bancos de dados).

Exportando (baixando) grandes bancos de dados MySQL via Sypex Dumper

Então, vamos começar com a consideração de resolver as tarefas definidas com uma opção mais fácil, ou seja, com uma solução pronta.

"Sypex Dumper" é um produto de software escrito em PHP que permite trabalhar com bancos de dados sem usar o phpMyAdmin. Os benefícios do "Sypex Dumper" incluem:

  1. Multilíngue (suporta vários idiomas).
  2. Existe uma versão gratuita do script (isso é suficiente para nossas tarefas).
  3. Alta velocidade de execução de tarefas.
  4. Trabalhando com grandes bancos de dados.
  5. Interface conveniente e clara.
  6. E muitos outros "chips" interessantes.

Nós os usaremos para baixar (transferir) grandes bancos de dados.

Para exportar (obter, baixar) o banco de dados de seu site específico para uso posterior, você precisa fazer o seguinte.

1. gratuitamente em nosso site.

2. sxd de uma forma conveniente para você.

3. Em seguida, vá para (Onde seu_site.com Entrar».

4. Na página que se abre (com autorização bem-sucedida), clique 1 vez na seção " Exportar» no menu superior. Se vários bancos de dados estiverem disponíveis para o usuário, selecione aquele que iremos exportar (baixar) na lista suspensa. As configurações restantes podem ser deixadas inalteradas e clicar no botão " Correr».


eu quero anotar que você não pode exportar todo o banco de dados, mas apenas algumas de suas tabelas, se necessário.

5. Após o término do processo de salvar o banco de dados (você pode entender isso pela barra de progresso), você pode baixar o banco de dados necessário clicando no botão apropriado.


Além disso, todos os bancos de dados exportados serão armazenados em seu site ao longo do caminho. /sxd/backup/. Se salvar o banco de dados falhar, verifique se a pasta cópia de segurança as permissões de gravação são 777.

Isso conclui a exportação (download) do banco de dados.

Importando (carregando) grandes bancos de dados MySQL via Sypex Dumper

Acima discutimos com você uma forma de obter o banco de dados necessário, agora você precisa transferi-lo (importá-lo) para outro projeto, e para isso fazemos o seguinte.

1. gratuitamente em nosso site.

2. Descompacte o arquivo e carregue a pasta no site sxd de uma forma conveniente para você.

3. Para pasta /sxd/backup/ carregue o banco de dados obtido anteriormente (baixado).

4. Em seguida, vá para http://seu_site.ru/sxd/index.php(Onde seu_site.com– o domínio do seu site), após o qual um formulário para inserir dados será aberto na sua frente. Nele, você especifica os dados do usuário que possui direitos para gerenciar o banco de dados que você precisa e clica em " Entrar».

5. Na página que se abre (com autorização bem-sucedida), clique 1 vez na seção " Importar» no menu superior. Se vários bancos de dados estiverem disponíveis para o usuário, selecione aquele para o qual importaremos (carregaremos) os dados na lista suspensa. As configurações restantes podem ser deixadas inalteradas e clicar no botão " Correr».


eu quero anotar que você pode importar não todo o banco de dados, mas apenas algumas de suas tabelas, se necessário.

6. Após o término do processo de importação (carregamento) do banco de dados (você pode entender isso pela barra de progresso), a tarefa pode ser considerada concluída.


Exportando (baixando) grandes bancos de dados MySQL via terminal SSH

SSH é um protocolo de rede que permite remotamente (via times especiais) gerenciam o sistema ou servidor. No Windows, existem muitos programas para trabalhar com esse protocolo, o mais popular deles é o PuTTY.

Em algumas hospedagens, como, por exemplo, existe um Terminal embutido direto no painel de controle. Não iremos longe e consideraremos a tarefa descrita no título usando seu exemplo. Vale a pena notar que as operações descritas abaixo também podem ser feitas em um cliente SSH separado.

1. Iniciamos o Terminal. Nela fica assim:


2. Se você se conectar ao servidor por meio de um programa de terceiros, faça login inserindo os dados apropriados (você pode obtê-los no painel de controle de hospedagem ou no seu provedor de hospedagem).

segundo- Esse:

mysqldump -u USERNAME -p DATABASE > backup.sql

diretamente a própria exportação, onde:

NOME DE USUÁRIO– login do usuário que tem acesso ao banco de dados.

BASE DE DADOS– o nome do banco de dados que queremos exportar.

backup.sql– o nome do arquivo onde o banco de dados será salvo e o caminho relativo a . Com esse design, o banco de dados será salvo na raiz da hospedagem.

4. na terceira etapaDigitar" no teclado. observação

Depois que o servidor estiver pronto para aceitar comandos via SSH novamente, isso significará que a exportação do banco de dados está concluída e você pode baixá-lo via FTP ou através do gerenciador de arquivos da hospedagem.

O processo de exportação (e importação) para SSH não é transmitido, e se o seu banco de dados for muito grande, seja paciente, pois você pode obter uma resposta do servidor após mais de 20 minutos.

Importação (upload) de grandes bancos de dados MySQL via terminal SSH

O que é SSH, já descobrimos acima e agora começaremos a considerar como importar um banco de dados baixado anteriormente para outro projeto.

1. na raiz do seu hospedagem, baixe o banco de dados baixado anteriormente de uma maneira conveniente para você.

2. Conecte-se à sua hospedagem/servidor via SSH.

então definitivamente vamos para a raiz da hospedagem e segundo- Esse:

Assim, obtemos uma lista completa de arquivos e diretórios no diretório atual. Procuramos incluir nosso banco de dados carregado anteriormente.

4. Se tudo estiver bem e a base estiver no lugar, digite o comando final:

mysql -u NOME DE USUÁRIO -p BANCO DE DADOS< backup.sql

NOME DE USUÁRIO– login do usuário que tem acesso ao banco de dados.

BASE DE DADOS– o nome do banco de dados para o qual importaremos os dados.

backup.sql- o nome do arquivo a ser carregado e o caminho relativo a . Com esse design, o banco de dados será importado da raiz de hospedagem.

5. Depois de inserir o comando, você será solicitado a inserir a senha do usuário especificado na quarta etapa. Digite sua senha e clique em " Digitar" no teclado. observação que a entrada da senha no terminal SSH não seja mostrada, ou seja, você digita a senha ou cola - sempre haverá um espaço vazio em seu lugar.

Depois disso, quando o servidor estiver novamente pronto para aceitar comandos via SSH, isso significará que a importação do banco de dados foi concluída e você pode continuar trabalhando no projeto.

Bom dia colegas 🙂

Hoje continuarei a apresentá-lo ao trabalho com o MySQL no console do MySQL e na linha de comando do MySQL.

Já escrevi artigos sobre como realizar ações básicas com dados MySQL através do console e fazer backup do banco de dados MySQL, além de exportar as informações nele armazenadas.

A continuação lógica desta história será a restauração do banco de dados e as informações armazenadas nele usando as operações de importação do banco de dados MySQL. E, mais importante, continuaremos a fazer isso com a ferramenta de todos os desenvolvedores hard - por meio do console.

Se você precisar de instruções para importar um banco de dados por meio do phpMyAdmin, poderá encontrá-lo no artigo sobre. No artigo atual, não estou ansioso para descrevê-lo novamente, especialmente porque o material de hoje será dedicado exclusivamente à importação do banco de dados MySQL por meio do console.

Mas, antes de começarmos a revisar as formas e ferramentas, algumas palavras sobre o que é importação de banco de dados MySQL, como é e qual é a melhor maneira de fazer isso?

Importando um banco de dados MySQL: o que e por quê?

A importação de um banco de dados MySQL é uma operação que preenche o banco de dados com informações. Nesse caso, a fonte de dados é um arquivo dump - um instantâneo de outro banco de dados, criado automaticamente durante a operação de exportação ou um script SQL especialmente preparado.

Na importação, assim como na exportação do banco de dados MySQL, existem dois tipos de informações armazenadas no banco de dados:

  1. a estrutura do banco de dados, suas tabelas e os dados armazenados nelas (coloquialmente chamados de dump do banco de dados);
  2. apenas dados armazenados em uma tabela ou coletados usando SELECIONE solicitações de.

Este artigo cobrirá ambas as opções.

Para restaurar um banco de dados de um despejo do MySQL com sua estrutura e todas as informações armazenadas, como já mencionado, você precisa de um arquivo de despejo do banco de dados, que é um arquivo de texto com qualquer extensão (primeiro pode ser compactado em um arquivo para reduzir o tamanho), contendo comandos SQL para criação do próprio banco de dados e tabelas, além de preenchê-los com informações.

Portanto, para restaurar um banco de dados MySQL de um despejo, você precisa executar os comandos contidos no arquivo.

Para a recuperação normal de dados, essas complexidades não são necessárias. Basta ter disponível um arquivo de teste, cujas informações serão estruturadas da mesma forma que na tabela do banco de dados: o número de colunas com informações corresponde ao número de atributos de entrada na tabela.

Para estes fins, o habitual arquivo txt, os dados em que serão divididos, ou arquivos criados em editores de planilhas especiais (Microsoft Office Excel, OpenOffice, etc.) que tenham uma extensão diferente: xls, csv, odt, etc.

Esses formatos são ainda preferíveis, porque. ao serem criados, os delimitadores de dados são adicionados automaticamente pelos editores, não sendo necessário digitá-los separadamente, como no caso de um arquivo de texto comum.

Adicionando Dados ao MySQL: Ferramentas

Em relação às ferramentas de importação de banco de dados MySQL, posso dizer que existem três delas hoje.

Vou listá-los, começando do nível mais baixo, terminando com o nível mais alto (em termos de uso de todos os tipos de shells e complementos):

  1. Console do servidor e linha de comando do MySQL;
  2. Scripts escritos em linguagens de programação que permitem gravar dados no MySQL usando ferramentas de linguagem;
  3. Programas prontos que fornecem uma interface visual para trabalhar com o banco de dados (o mesmo phpMyAdmin, MySQL WorkBench, MySQL Manager, etc.).

Acho que a ordem dos instrumentos não vai causar dúvidas, porque. as ferramentas de linguagem de programação, via de regra, funcionam com base nos comandos do console do MySQL, e os programas são baseados em scripts ou trabalham diretamente com a linha de comando do MySQL.

De uma forma ou de outra, o console está à frente de tudo, e o restante das ferramentas, na verdade, são seus emuladores.

Portanto, usar o console ao importar dados para o MySQL permite contornar vários tipos de restrições definidas pelas configurações das linguagens de programação no servidor Web e pelos próprios programas (que, aliás, nem sempre podem ser alterados).

Devido a isso, o preenchimento do banco de dados MySQL através do console pode não apenas ser mais rápido, mas também possibilitar essa operação em princípio, porque scripts e programas tendem a abortar as importações quando o tempo máximo de execução do script é atingido, ou não iniciam devido ao tamanho do arquivo baixado.

Acho que todos que já tentaram fazer upload de um dump para um grande banco de dados MySQL usando phpMyAdmin entendem do que estou falando.

Freqüentemente, esses limites são a causa de erros ao importar um banco de dados MySQL, que você nunca verá ao usar o console.

Claro, eles não são constantes e podem ser alterados, mas essa é uma dor de cabeça adicional, que, aliás, pode se tornar insolúvel para usuários comuns.

Espero ter motivado você a importar o banco de dados MySQL por meio do console (além disso, tanto sua estrutura quanto dados separados).

E com esta nota positiva, passamos para a tão esperada prática e consideramos os métodos e comandos para transferir dados para o banco de dados no console.

Como restaurar um banco de dados MySQL de um despejo usando o console?

Portanto, para implantar um despejo MySQL a partir do console, existem duas maneiras:

  1. usando um comando na linha de comando do MySQL;
  2. no próprio console do servidor.

Vamos começar em ordem.

Portanto, para importar um despejo de banco de dados MySQL para um repositório existente via , primeiro precisamos executá-lo e selecionar o banco de dados desejado para o qual carregaremos nosso despejo.

A implementação dessas ações é descrita em detalhes no artigo do link acima, portanto, se você precisar de sua descrição, vá a partir daí, porque. Não quero duplicá-los no segundo turno.

Depois de ter feito o acima, digite o seguinte comando no MySQL Shell:

Fonte path_and_dump_filename;

Resta-nos estudar as mensagens no console sobre o andamento das operações contidas no dump.

Sem primeiro mudar para o banco de dados desejado, após conectar-se ao servidor MySQL no console, o dump pode ser importado com o seguinte comando:

Mysql -u nome de usuário -p database_name< путь_и_имя_файла_дампа

Isso é tudo. O principal é aguardar o término da importação se o arquivo for muito grande. A conclusão do despejo pode ser julgada quando o console do servidor estiver disponível novamente.

A rigor, essa é a desvantagem desse método em relação ao anterior, tk. na primeira é possível observar as operações realizadas no banco de dados durante a importação, enquanto na segunda não.

Se o arquivo de despejo estiver compactado em um arquivo, ao fazer o download, você precisará descompactá-lo ao longo do caminho.

No Linux, isso pode ser feito assim:

Gunzip > [archive_filename.sql.gz] | mysql -u -p

No Windows utilitário padrão não é possível descompactar o arquivo no console, portanto, ele precisará ser instalado adicionalmente.

Como você pode ver, importar um dump do MySQL através do console é uma operação muito simples que pode ser executada com um único comando. Portanto, você não precisa ser um desenvolvedor para realizar este procedimento.

Se de repente você não souber como iniciar o console do servidor, poderá encontrar essas informações no artigo sobre a linha de comando do MySQL, cujo link eu já tinha anteriormente.

A propósito, usando os métodos descritos, também é possível importar uma tabela MySQL, e não um banco de dados inteiro. Nesse caso, o dump que você carrega deve conter as operações de criação e preenchimento com dados.

Carregando dados no banco de dados MySQL de um arquivo no console

Conversamos sobre como restaurar um banco de dados MySQL de um despejo no console. Agora é a hora de descobrir como você pode importar dados de arquivos da mesma maneira, incluindo de xls e csv para um banco de dados MySQL.

Para esta tarefa, temos novamente as mesmas duas ferramentas do caso anterior: a linha de comando do MySQL e o console do servidor.

Vamos começar a revisão novamente em ordem.

Assim, para importar um arquivo na linha de comando do MySQL, rodamos novamente e vamos até o banco de dados no qual os dados serão carregados.

LOAD DATA INFILE "path_and_dump_file_name" NA TABELA `database_table` COLUNAS TERMINADAS POR "," INCLUÍDAS POR "\"" LINHAS TERMINADAS POR "\n";

Não esqueça que se o servidor MySQL foi iniciado com a opção --secure-file-priv(o que geralmente acontece ao usar distribuições MySQL incluídas em compilações WAMP / MAMP), o nome do arquivo deve ser especificado levando em consideração a variável do sistema Secure_file_priv.

Para importar o banco de dados MySQL no console do servidor sem entrar no MySQL Shell, precisamos do utilitário mysqlimport, que faz parte da distribuição do MySQL, e a seguinte chamada para ele:

mysqlimport -u nome de usuário -p database_name name_and_path_to_import_file

Este utilitário é um análogo do comando SQL CARREGAR DADOS DO ARQUIVO, somente linha de comando. Mas, questiona-se, por que, então, entre os parâmetros de sua chamada, não está especificada a tabela na qual os dados do arquivo serão carregados?

O fato é que mysqlimport simplesmente não tem fisicamente determinado parâmetro. Em vez disso, o nome da tabela na qual os dados serão carregados deve estar presente no nome do arquivo importado.

Aqueles. se você deseja importar da tabela excel para a tabela mysql Usuários, então seu arquivo deve ser nomeado usuários.xls.

A extensão do arquivo importado, conforme já mencionado, pode ser qualquer.

Com o mysqlimport também é possível carregar vários arquivos xls ou csv para o MySQL de uma só vez. Para que os dados cheguem ao seu destino, os nomes dos arquivos e tabelas do banco de dados, como no exemplo anterior, também devem coincidir.

Se de repente as colunas no arquivo importado não estiverem na mesma sequência que as colunas da tabela do banco de dados, para esclarecer sua ordem, você precisará usar a opção --columns no seguinte formulário:

Mysqlimport -u username -p database_name --columns column1, column2, ... import_file_name and_path

Naturalmente, em meus exemplos, não considerei a lista completa de parâmetros mysqlimport, porque alguns deles são muito específicos e raramente usados ​​na prática.

Se você quiser se familiarizar com eles, a lista completa está disponível aqui - https://dev.mysql.com/doc/refman/5.7/en/mysqlimport.html

Recursos de carregamento de dados no banco de dados MySQL a partir de um despejo

Se você deseja que o processo de importação de um banco de dados MySQL grande seja mais rápido, é necessário criar um despejo de banco de dados usando as opções especiais do comando mysqldump, sobre o qual escrevi em meu artigo anterior sobre exportação de banco de dados MySQL, um link para o qual foi colocado no texto anteriormente.

Infelizmente, os próprios comandos de importação do banco de dados MySQL não possuem essas opções.

A única coisa é aumentar a velocidade ao carregar um grande despejo de banco de dados, você pode usar o seguinte recurso.

1. Abra o arquivo dump (de preferência em gerenciadores de arquivos, porque editores comuns podem simplesmente morrer de arquivos grandes).

2. Escrevemos as seguintes linhas no início do arquivo:

SET checagem_chave_externa = 0; SET UNIQUE_CHECKS = 0; CONFIGURAR AUTOCOMMIT = 0;

Observação! Talvez eles já estejam lá ou comentado (muitos programas que fazem dumps podem adicioná-los automaticamente)

3. No final do arquivo, escreva as ações inversas:

SET checagem_chave_externa = 1; SET UNIQUE_CHECKS = 1; CONFIGURAR AUTOCOMMIT = 1;

A propósito, esses comandos ajudarão não apenas a acelerar o processo de importação, mas também a torná-lo possível.

O fato é que se você já deu uma olhada no arquivo dump para importar um banco de dados MySQL, deve ter notado que a operação de configuração da estrutura das tabelas carregadas é assim:

DROP TABLE IF EXISTS `clientes`; CREATE TABLE `clientes` (...);

Aqueles. é feita uma busca no banco de dados por uma tabela com o mesmo nome da importada e, caso seja encontrada, é deletada e recriada.

E se de repente uma tabela existente for conectada por chaves estrangeiras a outras, todo o carregamento falhará.

Portanto, desabilitar a verificação da existência de chaves estrangeiras e outras também é uma excelente garantia da conclusão bem-sucedida do processo de importação do banco de dados MySQL.

Recursos de importação de csv para banco de dados MySQL e outros arquivos

Ao carregar dados em um banco de dados MySQL a partir de arquivos de texto, também pode ser necessário desativar as chaves estrangeiras.

Além disso, ao contrário da situação anterior, neste caso não funcionará escrever diretivas no arquivo, porque Comandos SQL nele não serão aceitos e executados.

Em um artigo anterior sobre exportação de um banco de dados MySQL, já mencionei como fazer isso usando a seguinte operação na linha de comando do MySQL:

SET FOREIGN_KEY_CHECKS=0;

No entanto, eu não mencionei lá que a variável de sistema MySQL FOREIGN_KEY_CHECKS tem dois significados: global e de sessão (para a sessão atual).

O valor global das variáveis ​​MySQL está em vigor para qualquer ação executada no servidor MySQL, até e incluindo a reinicialização do servidor. Em seguida, os valores das variáveis ​​serão redefinidos e serão atribuídos os valores padrão.

O valor da sessão da variável de sistema MySQL é definido apenas durante a sessão do usuário com o servidor MySQL. Uma sessão ou sessão começa quando o cliente se conecta ao servidor, no qual é atribuído um único id de conexão, e termina quando desconectado do servidor, o que pode ocorrer a qualquer momento (por exemplo, por timeout).

Por que decidi me lembrar disso?

Porque ao executar comandos para carregar um arquivo em um banco de dados MySQL através do console do servidor, sem entrar no MySQL Shell, descobri que desabilitar a verificação de chave estrangeira da maneira descrita anteriormente não funciona.

O console ainda apresentava uma mensagem de erro causada pela presença de chaves estrangeiras na tabela.

E surgiu porque o comando acima desativou a verificação da existência de chaves estrangeiras dentro da sessão, e não globalmente, que, além do método especificado, também pode ser realizada da seguinte forma:

SET SESSION nome_da_variável = valor_da_variável; SET @@session.variable_name = variável_valor; SET @@nome_da_variável = valor_da_variável;

Nos comandos acima, a variável é explicitamente marcada como uma variável de sessão.

E, como carreguei o arquivo csv na tabela MySQL através do console do servidor, sem uma conexão direta com o servidor MySQL, não foi criada a sessão, dentro da qual funcionaria o valor da minha sessão da variável.

Acabei definindo o valor global FOREIGN_KEY_CHECKS e a importação foi bem-sucedida.

Você pode fazer isso de uma das seguintes maneiras:

SET GLOBAL nome_da_variável = valor_da_variável; SET @@global.nome_da_variável = valor_da_variável;

Depois de alterar os valores, para verificar se as alterações surtiram efeito, não é supérfluo revisar os valores da variável. Para exibir a sessão e os valores globais ao mesmo tempo, use o seguinte comando:

SELECT @@GLOBAL.foreign_key_checks, @@SESSION.foreign_key_checks;

Isso conclui o artigo de hoje sobre a importação de um banco de dados MySQL. Compartilhe suas impressões e sua própria experiência nos comentários. Acho que muitos vão se interessar pela sua experiência.

Vejo você em breve! 🙂

PS: se você precisa de um site ou precisa fazer alterações em um já existente, mas não há tempo e desejo para isso, posso oferecer meus serviços.

Mais de 5 anos de experiência desenvolvimento de sites profissionais. Trabalhar com PHP, carro aberto,