somente dados mysqldump

Respostas:

553
mysqldump --no-create-info ...

Além disso, você pode usar:

  • --skip-triggers: se você estiver usando gatilhos
  • --no-create-db: se você estiver usando a --databases ...opção
  • --compact: se você quiser se livrar de comentários extras
matei
fonte
47
Aqui está o cmd completo para os pasters cópiamysqldump -u USERNAME -h HOST --no-create-info --skip-triggers YOURDATABASENAME YOURTABLENAME --where='id=12345678'
Ýzmir Ramirez
2
Se você obtiver Access denied for user ... to database '...' when doing LOCK TABLES, use--single-transaction
Rolf
@YzmirRamirez obrigado, mas para sua informação no Windows, eu tive que usar aspas duplas --where. Por exemplo,--where="id=2"
Kip
Este foi um economizador brilhante para mim. Obrigado.
Ken Ingram
149

Isso deve funcionar:

# To export to file (data only)
mysqldump -u [user] -p[pass] --no-create-info mydb > mydb.sql

# To export to file (structure only)
mysqldump -u [user] -p[pass] --no-data mydb > mydb.sql

# To import to database
mysql -u [user] -p[pass] mydb < mydb.sql

NOTA: não há espaço entre -p&[pass]

Ish
fonte
12
--no-create-dbé redundante ao usar--no-create-info
James McMahon
4
Um espaço depois -pestá bom
Obrigado
12
Geralmente é melhor usar -p sem fornecer a senha para que a senha não seja armazenada no seu histórico do bash (você será solicitado a digitar a senha depois de executar o comando).
Dan
2
Além do conselho de @ Dan, também torna a senha visível para qualquer usuário que possa listar os processos atuais ( ps -ef)
TMG
1
Deixar a senha após a -popção mysqldumpsolicita a senha.
Melle
22
 >> man -k  mysqldump [enter in the terminal]

você encontrará a explicação abaixo

--no-criar-informação, -t

Não escreva instruções CREATE TABLE que recriam cada tabela despejada. Nota Esta opção não exclui instruções que criam grupos de arquivos de log ou espaços de tabela a partir da saída do mysqldump; no entanto, você pode usar a opção --no-tablespaces para essa finalidade.

--no-data, -d

Não escreva nenhuma informação de linha da tabela (ou seja, não despeje o conteúdo da tabela). Isso é útil se você deseja despejar apenas a instrução CREATE TABLE da tabela (por exemplo, para criar uma cópia vazia da tabela carregando o arquivo de despejo).

# To export to file (data only)
mysqldump -t -u [user] -p[pass] -t mydb > mydb_data.sql

# To export to file (structure only)
mysqldump -d -u [user] -p[pass] -d mydb > mydb_structure.sql
Angelin Nadar
fonte
3
existe uma razão para usar duas vezes a opção '-t' e '-d'?
erwan
19

Se você deseja apenas as consultas INSERT, use o seguinte:

mysqldump --skip-triggers --compact --no-create-info

Jonathan
fonte
obrigado por --compactse livrar das declarações de comentários extras
chiliNUT 13/03
2

Sugeriria usar o seguinte trecho. Funciona bem mesmo com tabelas enormes (caso contrário, você abriria o despejo no editor e removeria coisas desnecessárias, certo?;)

mysqldump --no-create-info --skip-triggers --extended-insert --lock-tables --quick DB TABLE > dump.sql

É necessário pelo menos o mysql 5.x , mas quem executa coisas antigas hoje em dia .. :)

wuzer
fonte
Eu me deparei com uma situação recentemente, na qual tive que me conectar a um sistema que estava usando o 4.x na produção. Eles tinham espaços nos nomes de tabelas e colunas e, na minha opinião, estavam fazendo basicamente tudo errado.
Elkvis 26/04
0

Tente despejar em um arquivo delimitado.

mysqldump -u [username] -p -t -T/path/to/directory [database] --fields-enclosed-by=\" --fields-terminated-by=,
ed209
fonte
0

Ao tentar exportar dados usando a resposta aceita, recebi um erro:

ERROR 1235 (42000) at line 3367: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'

Como acima mencionado:

mysqldump --no-create-info

Exportará os dados, mas também exportará as instruções de criação de gatilho. Se você gosta de sua estrutura de banco de dados de saída (que também inclui gatilhos) com um comando e, em seguida, usando o comando acima para obter os dados, você também deve usar '--skip-triggers'.

Então, se você quiser apenas os dados:

mysqldump --no-create-info --skip-triggers
Ben Waine
fonte