MySQL - Exportação de banco de dados

A maneira mais simples de exportar os dados de uma tabela para um arquivo de texto é usando o SELECT...INTO OUTFILE instrução que exporta um resultado de consulta diretamente para um arquivo no host do servidor.

Exportando dados com a instrução SELECT ... INTO OUTFILE

A sintaxe para esta instrução combina uma SELECT comando com INTO OUTFILE filenameno fim. O formato de saída padrão é o mesmo do comando LOAD DATA. Portanto, a seguinte declaração exporta otutorials_tbl mesa em /tmp/tutorials.txt como um arquivo delimitado por tabulação e terminado por alimentação de linha.

mysql> SELECT * FROM tutorials_tbl 
   -> INTO OUTFILE '/tmp/tutorials.txt';

Você pode alterar o formato de saída usando várias opções para indicar como citar e delimitar colunas e registros. Para exportar a tabela tutorial_tbl em um formato CSV com linhas terminadas em CRLF, use o código a seguir.

mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt'
   -> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
   -> LINES TERMINATED BY '\r\n';

o SELECT ... INTO OUTFILE tem as seguintes propriedades -

  • O arquivo de saída é criado diretamente pelo servidor MySQL, então o nome do arquivo deve indicar onde você deseja que o arquivo seja gravado no host do servidor. Não existe uma versão LOCAL da declaração análoga àLOCAL versão de LOAD DATA.

  • Você deve ter o MySQL FILE privilégio para executar o SELECT ... INTO declaração.

  • O arquivo de saída ainda não deve existir. Isso evita que o MySQL destrua arquivos que podem ser importantes.

  • Você deve ter uma conta de login no host do servidor ou alguma forma de recuperar o arquivo desse host. Caso contrário, oSELECT ... INTO OUTFILE o comando provavelmente não terá valor para você.

  • No UNIX, o arquivo é criado world readablee é propriedade do servidor MySQL. Isso significa que, embora você possa ler o arquivo, talvez não consiga excluí-lo.

Exportando tabelas como dados brutos

o mysqldumpprograma é usado para copiar ou fazer backup de tabelas e bancos de dados. Ele pode escrever a saída da tabela como umRaw Datafile ou como um conjunto de INSERT instruções que recriam os registros na tabela.

Para despejar uma tabela como um arquivo de dados, você deve especificar um --tab opção que indica o diretório onde você deseja que o servidor MySQL grave o arquivo.

Por exemplo, para despejar o tutorials_tbl mesa do TUTORIALS banco de dados para um arquivo no /tmp diretório, use um comando conforme mostrado abaixo.

$ mysqldump -u root -p --no-create-info \
   --tab=/tmp tutorials tutorials_tbl
password ******

Exportando conteúdo de tabela ou definições em formato SQL

Para exportar uma tabela no formato SQL para um arquivo, use o comando mostrado abaixo.

$ mysqldump -u root -p TUTORIALS tutorials_tbl > dump.txt
password ******

Este será um arquivo criado com o conteúdo mostrado abaixo.

-- MySQL dump 8.23
--
-- Host: localhost    Database: TUTORIALS
---------------------------------------------------------
-- Server version       3.23.58

--
-- Table structure for table `tutorials_tbl`
--

CREATE TABLE tutorials_tbl (
   tutorial_id int(11) NOT NULL auto_increment,
   tutorial_title varchar(100) NOT NULL default '',
   tutorial_author varchar(40) NOT NULL default '',
   submission_date date default NULL,
   PRIMARY KEY  (tutorial_id),
   UNIQUE KEY AUTHOR_INDEX (tutorial_author)
) TYPE = MyISAM;

--
-- Dumping data for table `tutorials_tbl`
--

INSERT INTO tutorials_tbl 
   VALUES (1,'Learn PHP','John Poul','2007-05-24');
INSERT INTO tutorials_tbl 
   VALUES (2,'Learn MySQL','Abdul S','2007-05-24');
INSERT INTO tutorials_tbl 
   VALUES (3,'JAVA Tutorial','Sanjay','2007-05-06');

Para fazer dump de várias tabelas, nomeie todas elas seguidas do argumento do nome do banco de dados. Para despejar um banco de dados inteiro, não nomeie nenhuma tabela após o banco de dados, conforme mostrado no bloco de código a seguir.

$ mysqldump -u root -p TUTORIALS > database_dump.txt
password ******

Para fazer backup de todos os bancos de dados disponíveis em seu host, use o código a seguir.

$ mysqldump -u root -p --all-databases > database_dump.txt
password ******

A opção --all-databases está disponível na versão MySQL 3.23.12. Este método pode ser usado para implementar uma estratégia de backup de banco de dados.

Copiando tabelas ou bancos de dados para outro host

Se você deseja copiar tabelas ou bancos de dados de um servidor MySQL para outro, use o mysqldump com o nome do banco de dados e o nome da tabela.

Execute o seguinte comando no host de origem. Isso irá despejar o banco de dados completo emdump.txt Arquivo.

$ mysqldump -u root -p database_name table_name > dump.txt
password *****

Você pode copiar o banco de dados completo sem usar um nome de tabela específico, conforme explicado acima.

Agora, use o arquivo ftp dump.txt em outro host e use o seguinte comando. Antes de executar este comando, certifique-se de ter criado database_name no servidor de destino.

$ mysql -u root -p database_name < dump.txt
password *****

Outra maneira de fazer isso sem usar um arquivo intermediário é enviar a saída do mysqldump diretamente pela rede para o servidor MySQL remoto. Se você puder se conectar a ambos os servidores do host onde reside o banco de dados de origem, use o seguinte comando (certifique-se de ter acesso a ambos os servidores).

$ mysqldump -u root -p database_name \
   | mysql -h other-host.com database_name

No mysqldump, metade do comando se conecta ao servidor local e grava a saída do dump no pipe. A metade restante do comando se conecta ao servidor MySQL remoto no outro-host.com. Ele lê o pipe para entrada e envia cada instrução para o servidor other-host.com.