English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Exportação de Dados MySQL

Você pode usarSELECT...INTO OUTFILEPara exportar dados de forma simples para um arquivo de texto.

Para exportar dados usando a declaração SELECT ... INTO OUTFILE

No exemplo a seguir, usaremos a tabela de dados w3Os dados do codebox_tbl são exportados para /tmp/w3O arquivo codebox.txt contém:

mysql> SELECT * FROM w3codebox_tbl 
    -> INTO OUTFILE '"'/tmp/w3codebox.txt"';

Você pode configurar o formato específico da saída de dados usando opções de comando, o exemplo a seguir é para exportar no formato CSV:

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

No exemplo a seguir, é gerado um arquivo, com os valores separados por vírgula. Este formato pode ser usado por muitos programas.

SELECT a, b, a+b INTO OUTFILE '"'/tmp/result.text'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;

A declaração SELECT ... INTO OUTFILE tem as seguintes propriedades:

  • LOAD DATA INFILE é a operação inversa de SELECT ... INTO OUTFILE, na sintaxe SELECT. Para escrever os dados de um banco de dados em um arquivo, use SELECT ... INTO OUTFILE, para ler o arquivo de volta para o banco de dados, use LOAD DATA INFILE.

  • SELECT...INTO OUTFILE 'file_name' na forma de SELECT pode escrever as linhas selecionadas em um arquivo. Este arquivo é criado no host do servidor, portanto, você deve ter permissões FILE para usar essa sintaxe.

  • A saída não pode ser um arquivo existente. Isso previne que os dados do arquivo sejam alterados.

  • Você precisa ter uma conta de login no servidor para recuperar o arquivo. Caso contrário, SELECT ... INTO OUTFILE não terá qualquer efeito.

  • No UNIX, o arquivo é criado como legível, com permissões pertencentes ao servidor MySQL. Isso significa que, embora você possa ler o arquivo, pode não ser possível excluí-lo.

Exportar a tabela como dados originais

mysqldump é um utilitário do mysql para transferir bancos de dados. Ele gera principalmente um script SQL que contém os comandos necessários para recriar o banco de dados a partir do zero, como CREATE TABLE, INSERT, etc.

Para exportar dados usando mysqldump, é necessário usar  --a opção tab para especificar o diretório do arquivo de exportação, o qual deve ser gravável.

O exemplo a seguir exportará a tabela w3codebox_tbl exportado /no diretório tmp:

$ mysqldump -u root -p --no-create-info \
            --tab=/tmp w3codebox w3codebox_tbl
senha ******

Exportar dados no formato SQL

Exportar dados no formato SQL para o arquivo especificado, conforme mostrado a seguir:

$ mysqldump -u root -p w3codebox w3codebox_tbl > dump.txt
senha ******

O conteúdo do arquivo criado pelos seguintes comandos é o seguinte:

-- MySQL dump 8.23
--
-- Host: localhost Database: w3codebox
---------------------------------------------------------
-- Server version       3.23.58
--
-- Table structure for table `w3codebox_tbl`
--
CREATE TABLE w3codebox_tbl (
  w3codebox_id int(11) NOT NULL auto_increment,
  w3codebox_title varchar(100) NOT NULL default '',
  w3codebox_author varchar(40) NOT NULL default '',
  submission_date date default NULL,
  PRIMARY KEY (w3codebox_id),
  UNIQUE KEY AUTHOR_INDEX (w3codebox_author)
) TYPE=MyISAM;
--
-- Dumping data for table `w3codebox_tbl`
--
INSERT INTO w3codebox_tbl 
       VALUES (1Learn PHP2007-05-24');
INSERT INTO w3codebox_tbl 
       VALUES (2Learn MySQL2007-05-24');
INSERT INTO w3codebox_tbl 
       VALUES (3JAVA Tutorial2007-05-06');

Se precisar exportar todos os dados do banco de dados, você pode usar o seguinte comando:

$ mysqldump -u root -p w3codebox > database_dump.txt
senha ******

Se precisar fazer backup de todos os bancos de dados, você pode usar o seguinte comando:

$ mysqldump -u root -p --all-bases de dados > database_dump.txt
senha ******

--all-A opção databases no MySQL 3.23.12 e versões posteriores adicionadas.

Este método pode ser usado para implementar estratégias de backup de banco de dados.

Copiar tabelas e bancos de dados para outro host

Se você precisar copiar os dados para outro servidor MySQL, você pode especificar o nome do banco de dados e da tabela no comando mysqldump.

Execute os seguintes comandos no host de origem para fazer backup dos dados no arquivo dump.txt:

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

Se você fizer um backup completo do banco de dados, não é necessário usar o nome específico da tabela.

Se você precisar importar o backup do banco de dados para o servidor MySQL, você pode usar os seguintes comandos, você precisa confirmar que o banco de dados já foi criado:

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

Você também pode usar os seguintes comandos para importar diretamente os dados exportados para o servidor remoto, mas certifique-se de que os dois servidores são acessíveis, podem se comunicar entre si:

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

Os comandos acima usaram o pipe para importar os dados exportados para o host remoto especificado.