MySQLDump uma instrução INSERT para cada linha de dados


178

com a seguinte declaração:

mysqldump --complete-insert --lock-all-tables --no-create-db 
--no-create-info --extended-insert --password=XXX -u XXX 
--dump-date yyy > yyy_dataOnly.sql

Eu recebo instruções INSERT como as seguintes:

INSERT INTO `table` VALUES (1,'something'),(2,'anything'),(3,'everything');

O que eu preciso no meu caso é algo como isto:

INSERT INTO `table` VALUES (1,'something');
INSERT INTO `table` VALUES (2,'anything');
INSERT INTO `table` VALUES (3,'everything');

Existe uma maneira de dizer ao "mysqldump" para criar uma nova instrução INSERT para cada linha? Obrigado pela ajuda!

Respostas:


277

Usar:

mysqldump --extended-insert=FALSE 

Esteja ciente de que várias inserções serão mais lentas que uma grande inserção.


75
--skip-extended-insert aparece a ser a sintaxe correta para mim (usando mysqldump versão 10.13)
Isaac Betesh

17
Mais devagar, sim, mas muitos editores de texto têm problemas com linhas de texto muito longas e, se as tabelas tiverem uma quantidade enorme de dados, é isso que acontecerá.
Jahmic

mysqldump --opt --skip-extended-insertou mysqldump --opt --extended-insert=FALSEtrabalho
Yzmir Ramirez 3/16

AMD! Migrei para uma nova versão que causou esse problema e muitos dos meus scripts automatizados falharam. Eu pensei que estava ferrado, mas isso parece ser uma solução fácil. Obrigado por compartilhar!
Varun Verma 12/09

11
Isso é bom porque agora eu posso fazer um git diffem dois despejos de banco de dados diferentes e ter uma imagem clara do que foi alterado.
Rolf

9

Nas versões mais recentes, foram feitas alterações nos sinalizadores: da documentação:

- inserção extendida, -e

Escreva instruções INSERT usando a sintaxe de várias linhas que inclui várias listas VALUES. Isso resulta em um arquivo de despejo menor e acelera as inserções quando o arquivo é recarregado.

--optar

Esta opção, ativada por padrão, é um atalho para a combinação de --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick - set-charset. Ele fornece uma operação de despejo rápido e produz um arquivo de despejo que pode ser recarregado rapidamente em um servidor MySQL.

Como a opção --opt está ativada por padrão, você especifica apenas o inverso, o --skip-opt para desativar várias configurações padrão. Veja a discussão dos grupos de opções do mysqldump para obter informações sobre como ativar ou desativar seletivamente um subconjunto das opções afetadas pelo --opt.

--skip-extended-insert

Desativar inserção estendida

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.