MySQL - Importação de banco de dados - Métodos de recuperação

Existem duas maneiras simples no MySQL de carregar dados no banco de dados MySQL a partir de um arquivo de backup anterior.

Importando dados com LOAD DATA

O MySQL fornece uma instrução LOAD DATA que atua como um carregador de dados em massa. Aqui está um exemplo de declaração que lê um arquivodump.txt do seu diretório atual e carrega-o na tabela mytbl no banco de dados atual.

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
  • Se o LOCAL palavra-chave não estiver presente, o MySQL procura o arquivo de dados no host do servidor usando o looking into absolute pathname, que especifica totalmente a localização do arquivo, começando na raiz do sistema de arquivos. O MySQL lê o arquivo no local fornecido.

  • Por padrão, LOAD DATA assume que os arquivos de dados contêm linhas que são encerradas por avanços de linha (novas linhas) e que os valores de dados em uma linha são separados por tabulações.

  • Para especificar um formato de arquivo explicitamente, use um FIELDS cláusula para descrever as características dos campos dentro de uma linha, e um LINEScláusula para especificar a seqüência de fim de linha. Os seguintesLOAD DATA instrução especifica que o arquivo de dados contém valores separados por dois pontos e linhas terminadas por retornos de carro e caractere de nova linha.

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl
   -> FIELDS TERMINATED BY ':'
   -> LINES TERMINATED BY '\r\n';
  • O comando LOAD DATA assume que as colunas do arquivo de dados têm a mesma ordem das colunas da tabela. Se isso não for verdade, você pode especificar uma lista para indicar em quais colunas da tabela as colunas do arquivo de dados devem ser carregadas. Suponha que sua tabela tenha colunas a, b e c, mas colunas sucessivas no arquivo de dados correspondem às colunas b, c e a.

Você pode carregar o arquivo conforme mostrado no bloco de código a seguir.

mysql> LOAD DATA LOCAL INFILE 'dump.txt' 
   -> INTO TABLE mytbl (b, c, a);

Importando dados com mysqlimport

O MySQL também inclui um programa utilitário chamado mysqlimport que atua como um invólucro em torno de LOAD DATA, para que você possa carregar os arquivos de entrada diretamente da linha de comando.

Para carregar dados do dump.txt para dentro mytbl, use o seguinte comando no prompt do UNIX.

$ mysqlimport -u root -p --local database_name dump.txt
password *****

Se você usar mysqlimport, as opções de linha de comando fornecem os especificadores de formato. omysqlimport comandos que correspondem aos dois anteriores LOAD DATA declarações parecem conforme mostrado no bloco de código a seguir.

$ mysqlimport -u root -p --local --fields-terminated-by = ":" \
   --lines-terminated-by = "\r\n"  database_name dump.txt
password *****

A ordem em que você especifica as opções não importa para mysqlimport, exceto que todas elas devem preceder o nome do banco de dados.

o mysqlimport declaração usa o --columns opção para especificar a ordem das colunas -

$ mysqlimport -u root -p --local --columns=b,c,a \
   database_name dump.txt
password *****

Tratamento de citações e personagens especiais

A cláusula FIELDS pode especificar outras opções de formato além TERMINATED BY. Por padrão, LOAD DATA assume que os valores não estão entre aspas e interpreta a barra invertida (\) como um caractere de escape para os caracteres especiais. Para indicar o caractere de citação de valor explicitamente, use oENCLOSED BYcomando. O MySQL removerá esse caractere do final dos valores de dados durante o processamento de entrada. Para alterar o caractere de escape padrão, useESCAPED BY.

Quando você especifica ENCLOSED BY para indicar que os caracteres de aspas devem ser removidos dos valores de dados, é possível incluir o caractere de aspas literalmente nos valores de dados duplicando-o ou precedendo-o com o caractere de escape.

Por exemplo, se as aspas e caracteres de escape forem "e \, o valor de entrada "a""b\"c" será interpretado como a"b"c.

Para mysqlimport, as opções de linha de comando correspondentes para especificar valores de cotação e escape são --fields-enclosed-by e --fields-escaped-by.