Como fazer backup de uma única tabela em um banco de dados MySQL?

441

Por padrão, mysqldumpfaz o backup de um banco de dados inteiro. Eu preciso fazer backup de uma única tabela no MySQL. É possível? Como faço para restaurá-lo?

Mandar Pande
fonte

Respostas:

838

Despejar e restaurar uma única tabela de .sql

Despejo

mysqldump db_name table_name > table_name.sql

Despejando de um banco de dados remoto

mysqldump -u <db_username> -h <db_host> -p db_name table_name > table_name.sql

Para referência adicional:

http://www.abbeyworkshop.com/howto/lamp/MySQL_Export_Backup/index.html

Restaurar

mysql -u <user_name> -p db_name
mysql> source <full_path>/table_name.sql

ou em uma linha

mysql -u username -p db_name < /path/to/table_name.sql


Despejar e restaurar uma única tabela de um formato compactado (.sql.gz)

Crédito: John McGrath

Despejo

mysqldump db_name table_name | gzip > table_name.sql.gz

Restaurar

gunzip < table_name.sql.gz | mysql -u username -p db_name

Ozair Kafray
fonte
13
SQL normalmente comprime bem - você pode canalizar o comando acima através de gzip e o arquivo resultante será muito menor: mysqldump db_name table_name | gzip > table_name.sql.gz para restaurar: gunzip < table_name.sql.gz | mysql -u username -p db_name
John McGrath
E se você quiser incluir a senha na linha de comando? Então você já está usando Ppassword
Freedo
23

O mysqldump pode usar um parâmetro tbl_name, para que ele faça backup apenas das tabelas especificadas.

mysqldump -u -p yourdb yourtable > c:\backups\backup.sql
Jacob
fonte
15

tentar

for line in $(mysql -u... -p... -AN -e "show tables from NameDataBase");
do 
mysqldump -u... -p.... NameDataBase $line > $line.sql ; 
done
  • tabelas de nomes $ line cotent;)
Robin Gomez
fonte
1
Isso é útil para despejar um banco de dados em consultas de tabela separadas - posso saber exatamente o que as opções fazem?
Xiankai 17/10/2013
Olá, -AN (- no-auto-rehash, -A | --skip-column-names, -N Não escreva nomes de colunas nos resultados.) -E (- execute = statement, -e statement | Execute o declaração e sair do formato de saída padrão é similar ao produzido com --batch) fuente:.. dev.mysql.com/doc/refman/5.6/en/mysql-command-options.html
Robin Gomez
12

Podemos fazer um despejo mysql de qualquer tabela em particular com qualquer condição, como abaixo

mysqldump -uusername -p -hhost databasename tablename --skip-lock-tables

Se quisermos adicionar uma condição where específica na tabela, podemos usar o seguinte comando

mysqldump -uusername -p -hhost databasename tablename --where="date=20140501" --skip-lock-tables
minhas23
fonte
8

Você pode usar facilmente para despejar tabelas selecionadas usando MYSQLWorkbench tool, individualmente ou grupo de tabelas em um despejo e importá-las da seguinte maneira: você também pode adicionar informações de host se estiver executando-as no seu local adicionando -h IP.ADDRESS.NUMBER depois-u nome do usuário

mysql -u root -p databasename < dumpfileFOurTableInOneDump.sql 
Daniel Adenew
fonte
Infelizmente Mysql Workbench tem algumas questões que escapam que podem levar a exportação de dados inválidos que é inútil ...
Barell
6

Você pode usar este código:

Este exemplo faz um backup do banco de dados sugarcrm e despeja a saída para sugarcrm.sql

# mysqldump -u root -ptmppassword sugarcrm > sugarcrm.sql

# mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

O sugarcrm.sql conterá a tabela de descarte, criar tabela e inserir o comando para todas as tabelas no banco de dados sugarcrm. A seguir, é apresentada uma saída parcial do sugarcrm.sql, mostrando as informações de despejo da tabela accounts_contacts:

-

- Estrutura de mesa para mesa accounts_contacts

DROP TABLE IF EXISTS `accounts_contacts`;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `accounts_contacts` (
`id` varchar(36) NOT NULL,
`contact_id` varchar(36) default NULL,
`account_id` varchar(36) default NULL,
`date_modified` datetime default NULL,
`deleted` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `idx_account_contact` (`account_id`,`contact_id`),
KEY `idx_contid_del_accid` (`contact_id`,`deleted`,`account_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;

--
Linda Martin
fonte
5

Você pode usar o código abaixo:

  1. Apenas para estrutura de tabela única Backup

-

mysqldump -d <database name> <tablename> > <filename.sql>
  1. Para estrutura de tabela única com dados

-

mysqldump <database name> <tablename> > <filename.sql>

Espero que ajude.

Fénix
fonte
5

Você pode usar mysqldumpna linha de comando:

mysqldump -u username -p password dbname tablename > "path where you want to dump"

Você também pode usar o MySQL Workbench:

Vá para a esquerda> Exportação de dados> Selecionar esquema> Selecionar tabelas e clique em Exportar

SAM AB
fonte
apenas uma pequena info, espaço omitir entre -p e senha -> -ppassword, mas sua insegurança
Agung Sagita