Esquema de exportação do MySQL sem dados


491

Estou usando um banco de dados MySql com um programa Java, agora quero dar o programa a outra pessoa.

Como exportar a estrutura do banco de dados MySql sem os dados, apenas a estrutura?

Respostas:


962

Você pode fazer com a --no-dataopção com o comando mysqldump

mysqldump -u root -p --no-data dbname > schema.sql

11
IMHO, mysqldumpé a melhor resposta. O MySQL Administrator foi abandonado e o MySQL Workbench ainda é bastante problemático.
Álvaro González

49
Considere também usar a --single-transactionopção se você não quiser ou não puder fazer bloqueios de tabela.
Jim

47
-d é --no-data para abreviar.
marstone

36
Considere também adicionando --routines Se você é banco de dados armazenado procedimentos / funções
crafterm

15
Por padrão, isso não inclui o CREATE DATABASEcomando. Para incluir, substitua dbnamepor --databases dbname(abreviação:) -B dbname. Em seguida, para importar em outro servidor, usemysql -u root -p < schema.sql
Sean

88

Sim, você pode usar mysqldumpcom a --no-dataopção:

mysqldump -u user -h localhost --no-data -p database > database.sql

4
Estou surpreso que esta não seja a resposta aceita, apesar de ter sido postada dez segundos antes e sendo mais completa, se não idêntica à resposta aceita.
User5532169

1
@ zypA13510, aparentemente dez segundos podem ser uma diferença de 749 votos positivos.
emallove

17

você também pode extrair uma tabela individual com a --no-dataopção

mysqldump -u user -h localhost --no-data -p database tablename > table.sql

6

Você pode usar a opção -d com o comando mysqldump

mysqldump -u root -p -d databasename > database.sql

6

Despejar sem usar saída.

mysqldump --no-data <database name> --result-file=schema.sql

4

Cuidado, porém, que a opção --no-data não incluirá a definição de exibição. Portanto, se você teve uma visualização como a seguir, crie a view v1 select a. idAS id, a. created_dateAS created_date de t1; com a opção --no-data, a definição da visualização será alterada para a seguinte criação da visualização v1, selecione 1 AS id, 1 AScreated_date



2

Caso esteja usando o IntelliJ, você pode ativar a visualização Banco de Dados (Exibir -> Janela Ferramentas -> Banco de Dados)

Dentro dessa visão, conecte-se ao seu banco de dados. Em seguida, clique com o botão direito do mouse no banco de dados e selecione "Copiar DDL". Outros IDEs podem oferecer uma função semelhante.

IntelliJ DDL


2
Eu dei-lhe uma tentativa, ele não contém quaisquer gatilhos (e deus sabe que mais não)
phil294

2

Se você deseja despejar todas as tabelas de todos os bancos de dados e sem dados (apenas estruturas de banco de dados e tabela), você pode usar:

mysqldump -P port -h hostname_or_ip -u username -p --no-data --all-databases > db_backup.sql

Isso produzirá um arquivo .sql que você pode carregar em um servidor mysql para criar um novo banco de dados. Casos de uso para isso não são muitos em um ambiente de produção, mas faço isso semanalmente para redefinir servidores que estão vinculados a sites de demonstração; portanto, o que os usuários fazem durante a semana, nas noites de domingo, tudo volta para "novo": )


1

Para obter um script de criação de uma tabela individual:
- selecione toda a tabela (com tecla Shift)
- clique com o botão direito do mouse no nome da tabela e clique em Copiar para a área de transferência> Criar instrução.


0

shell> mysqldump --no-data - rotinas - eventos teste> dump-defs.sql


1
Bem-vindo ao StackOverflow. Você pode dar uma ótima resposta com isso se der um pouco mais de informações e restrições.
Janhoo 5/03

0

Adicione as opções --rotines e --events para também incluir definições de rotina e eventos armazenadas

mysqldump -u <user> -p --no-data --routines --events test > dump-defs.sql

-1

Você pode usar o seguinte método

mysqldump -d <database name> > <filename.sql> // -d : without data

Espero que ajude você


6
Esta resposta não acrescenta nada que outra resposta ainda não tenha dito.
Daniel
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.